1. 程式人生 > >[Python]什麼時候使用自定義類

[Python]什麼時候使用自定義類

      Python中所有的資料都是物件,它提供了許多高階的內建資料型別,功能強大,使用方便,是Python的優點之一。那麼什麼時候使用自定義類呢?比如設計一個Person類,如果不使用自定義類,可以這樣做:

person=['mike', 23, 'male']  #0-姓名, 1-年紀, 2-性別

print(person[0], person[1], person[2])

      可以看到,使用內建型別list,需要用下標來引用成員資料,不直觀。可以改用dic型別來做:

person1={'name':'mike', 'age': 23, 'sex': 'male'}

person2={'name':'hellen', 'age': 20, 'sex': 'female'}

print(person1['name'], person1['age'], person1['sex'])

      這樣不用記憶下標,直觀多了。但是字典的語法仍然有些麻煩,如果能夠像這樣引用:person.name,person.age等,就更好。這就是自定義類存在的好處了:

class Person:

    def __init__(self, name, age, sex):

        self.name = name

        self.age = age

        self.sex = sex

    def __str__(self): #過載該函式便於測試

        sep = ','

        return self.name+sep+str(self.age)+sep+self.sex

person1 = Person('mike', 23, 'male') 

person2 = Person('hellen', 20, 'female')

print(person1)

print(person2.name, person2.age, person2.sex)

      可以看到,只要定義好這個類的建構函式,就可以很方便的生成這個類的例項,並且引用資料成員也很方便,比直接使用內建型別方便多了。其實Python就是用內建型別dic來實現自定義類的成員的儲存和引用的,從這個角度來看,自定義類是內建類的簡化使用方式,內建型別是自定義型別內部必要的組成部分。同時,由於自定義類可以定義自己的成員函式或者過載預定義的方法,所以自定義類擴充套件了內建類的功能,可以提供對現實事物更好的模擬,這正是面向物件程式設計的優點。程式設計的時候,先對所要模擬的事物形成概念,然後儘量使用類來抓住概念,這是面向物件設計的關鍵。如果需要產生多個同類的物件,應該儘可能地設計一個自定義類去抽象它們。

      對自定義類的使用也別過分,有些功能只需要定義一個函式就可以做到了,這個時候就沒有必要設計一個自定義類。

相關推薦

unixODBC資料來源配置+Python定義連線Informix資料庫

Python自定義類連線資料庫 利用之前unixODBC配置的資料來源,自定義一個類然後連線資料庫 import pyodbc class DB18: def __init__(self): self.conn = self.open()

VS Code python定義或者函式Import後無自動補全提示

用VS code寫python,標準模組自動補全都沒有問題,在用自定義的module,import後怎麼都沒有補全提示。 最後採用替換掉Microsoft python analysis engine,採用了Jedi as intellisense engine。設定如下: 在setting

python定義

設計一個Person類的3種方式: 1、使用內建型別list person=[‘mike’, 23, ‘male’] #0-姓名, 1-年紀, 2-性別 print(person[0], person[1], person[2]) 2、使用字典型別dic person1={‘name’:

python:定義中迭代行為的實現

#!/usr/bin/env python # -*- coding: utf-8 -*- # @author : cat # @date : 2017/6/23. class

python定義字典的擴充套件,讓字典操作起來更容易

python自定義的一個字典擴充套件類,可以讓字典操作起來更簡單, 比如: 原來需要這樣用:dic['website'] = 'sharejs.com' 有了這個類,你可以這樣用:dic.websites = 'sharejs.com' 是不是更簡單。 類定義如下 clas

python定義

python中常用的自定類方法: 1.可以定義類和函式,然後自己通過類直接賦值,程式碼如下: 2.可以藉助MethodType實現,程式碼如下: 3.可以藉助type實現,程式碼如下: dir() 函式不帶引數時,返回當前範圍內的變數、方法和定義的型別列表;帶引數時,返回引數的屬性

[Python]什麼時候使用定義

      Python中所有的資料都是物件,它提供了許多高階的內建資料型別,功能強大,使用方便,是Python的優點之一。那麼什麼時候使用自定義類呢?比如設計一個Person類,如果不使用自定義類,可以這樣做: person=['mike', 23, 'male'] 

Python匯入定義

現有自定義類(Color.py)如下,類位於路徑’/Users/chuxing/python/test’下: class Color(object): def __init__(self, red, green, blue): s

Python+Selenium中級篇之8-Python定義封裝一個簡單的Log

       本文介紹如何寫一個Python日誌類,用來輸出不同級別的日誌資訊到本地資料夾下的日誌檔案裡。為什麼需要日誌輸出呢,我們需要記錄我們測試指令碼到底做了什麼事情,最好的辦法是寫事件監聽。這個

定義異常

http image log 技術分享 分享 cnblogs 能夠 ima img 只放幾張圖片吧,自己能夠看明白就行了。 1. 2. 3. 4. 自定義類異常

定義型轉換器之TypeConverter

can con ont rto 方法 contex int 讓我 tor C#提供了很多類型轉換的方法如ConvertToInt、int.Parse、int.tryParse等等,這些方法都能將一個C#的基本數據類型轉換成另一個C#基本數據類型.那麽.既然如此,C#肯定

python定義函數的參數之四種表現形式

位置 法則 int cal typeerror bsp python pytho recent (1)def a(x,y):print x,y 這是最常見的定義方式,調用該函數,a(1,2)則x取1,y取2,形參與實參相對應,如果a(1)或者a(1,2,3)則會報錯 (2)

Lambda語句中創建定義型時,也可指定某種特定型,方法是在new與{}之間寫上型名稱

特定 pan sel lambda語句 lam {} where distinct select 如: var fc =...ChildFath = fc.Select(c => new Child_Father { child = c.child, father =

定義型的乘法口訣表

定義函數 stdio.h void ++ define oid 之前 scan warnings 之前有寫過乘法口訣表,這次利用函數,做一個可以自定義函數的代碼。 #define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>

Python定義分頁程序

當前頁 start itl ati doc line mod 防止 分頁 為了防止XSS即跨站腳本攻擊,需要加上 safe # 路由 from django.conf.urls import url from django.contrib import

Java定義加載和ClassPath加載器

訪問 pub 需要 委派 iat 定義 pro logs repl 1 自定義類加載器: 實現規則: 自定義類加載器,需要重寫findClass,然後通過調用loadClass進行類加載(loadClass通過遞歸實現類的雙親委派加載) package com.daxin

Hadoop學習筆記—5.定義型處理手機上網日誌

clas stat 基本 手機上網 oop interrupt pil 依然 手機號碼 一、測試數據:手機上網日誌 1.1 關於這個日誌   假設我們如下一個日誌文件,這個文件的內容是來自某個電信運營商的手機上網日誌,文件的內容已經經過了優化,格式比較規整,便於學習研究。

python定義異常,使用raise引發異常

value init tom 輸入 mar pri Coding pre lis 1.自定義異常類,自定義的異常類必須是Exception或者Error的子類! 1 #!/usr/bin/env python 2 # encoding: utf-8 3 4 cl

list<定義>排序方法

實現 onerror var div lis rabl bsp 邏輯 int 類實現接口IComparable //實現接口的自定義類 //此接口規定了一個返回類型int的方法, //public int CompareTo(object obj) //返回1時thi

QSet使用及Qt定義型使用QHash等算法

算法 har 地址 node slc doc support ati tarray 版權聲明:若無來源註明,Techie亮博客文章均為原創。 轉載請以鏈接形式標明本文標題和地址: 本文標題:QSet使用及Qt自定義類型使用QHash等算法 本文地址:http://