python編寫類
⑴ 如何設計好一個python的類
理解好python類是理解面向對象的編程語言的很重要一部分。首先我們明確一下:
什麼是class?簡單來說,class是數據和函數有邏輯的組合。所謂邏輯的組合指的是數據和class里的函數都是息息相關的。所以class 「can be thought of asblueprints for creating objects」。 這里我舉一個簡單的例子:
classCustomer(object):
""".:Attributes:name:'sname.balance:'saccount."""
def__init__(self,name,balance=0.0):
"""*name*andstartingbalanceis*balance*."""
self.name=name
self.balance=balance
defwithdraw(self,amount):
"""*amount*dollars."""
ifamount>self.balance:
raiseRuntimeError('.')
self.balance-=amount
returnself.balance
defdeposit(self,amount):
"""*amount*dollars."""
self.balance+=amount
returnself.balance所以我們可以看到,class裡面重要的兩個元素: Attributes and Methods。因為我們需要理清楚這兩者之間的關系。Attribute就是這個屬於這個class 的對象的屬性。比如這個例子里的名字(name)和余額(balance)。基於這些屬性的對象,我們定義了方法取錢(withdraw)和存錢(deposit)。所以整個class就顯得非常清晰了。
除此之外,當class復雜起來的時候,我們還需要考慮比如哪些methods是static的;以及有沒有必要建立abstract base class讓我們去inherit。
純手碼 希望對你有幫助!
⑵ 用Python編寫
classCube:
def__init__(self,length):
self.length=length
defset_color(self,color):
self.color=color
defvolume(self):
returnself.length**3,self.color
if__name__=='__main__':
test=Cube(3)
test.set_color('green')
print(test.volume())
這是簡單的類的定義
⑶ 什麼是python編程
Python是一門新興的編程語言,編程語言有很多,比如C++、Java、C#、PHP、JavaScript等,Python也是其中之一,在學習Python前,我們需要對它有一定的了解。
Python支持多種編程范型,如函數式、指令式、結構化、面向對象和反射式編程。
Python解釋器易於擴展,可以使用C或C++或其他可以通過C調用的語言擴展新的功能和數據類型。
Python編寫的程序不需要編譯成二進制代碼,可以直接從源代碼運行程序,在計算機內部,Python解釋器把源代碼轉換成位元組碼的中間形式,然後再把它翻譯成計算機使用的機器語言並運行。
語法簡潔而清晰,具有豐富和強大的類庫,使用Python快速生成程序的原型,然後對其中有特別要求的部分,用更合適的語言改寫,性能要求特別高,就可以用C/C++重寫,而後封裝為Python可以調用的擴展類庫。
只有基礎建牢固了,才會更利於我們以後的發展及進步,現如今Python的發展十分迅速,已經將C++語言甩在了後邊,在不久的將來,可能會超過C和Java這些主流語言。
⑷ python中如何定義類
輸入class ......(......處自己寫):
然後在四個空格後面輸入def ......(......)(建議加一個self)
⑸ python中類的組合與創建
在一個類里再嵌套多個類,叫做類的組合,組合類可以更加有條理的組合類的各種信息。
我們可以將每一個小類的構造的對象作為參數傳入大類中,這樣就可以通過使用 大類構造的對象.大類的屬性.小類的屬性 ,來訪問每一個具體的屬性。
我們以一台電腦為例,大類就是指計算機類其屬性包含了小類:基本信息、硬體信息、操作系統信息、用戶信息,而這些小類又包含了一系列具體的信息。如果我們想訪問具體的屬性,就需要通過組合類來實現;
這樣就列印輸出電腦基礎信息中的品牌和型號。
computer_detail.py
computer.py
⑹ Python:編寫一個Employee類
classEmployee:
firstName=''
def__init__(self,firstName,lastName,salary):
self.firstName=firstName
self.lastName=lastName
self.salary=salary
defgive_raise(self,increase=5000):
self.salary+=increase
defdisplayEmployee(self):
print("firstName:",self.firstName,",lastName:",self.lastName,",Salary:",self.salary)
defsetUp():
deftest_give_default_raise(emp):
emp.give_raise()
deftest_give_custom_raise(emp):
emp.give_raise(3000)
emp=Employee("William","Shakespeare",3000)
emp.displayEmployee()
test_give_default_raise(emp)
emp.displayEmployee()
test_give_custom_raise(emp)
emp.displayEmployee()
setUp()
⑺ python中如何定義類
一、類定義:
class <類名>:
<語句>
類實例化後,可以使用其屬性,實際上,創建一個類之後,可以通過類名訪問其屬性
如果直接使用類名修改其屬性,那麼將直接影響到已經實例化的對象
類的私有屬性:
__private_attrs兩個下劃線開頭,聲明該屬性為私有,不能在類地外部被使用或直接訪問
在類內部的方法中使用時self.__private_attrs
類的方法
在類地內部,使用def關鍵字可以為類定義一個方法,與一般函數定義不同,類方法必須包含參數self,且為第一個參數
私有的類方法
__private_method兩個下劃線開頭,聲明該方法為私有方法,不能在類地外部調用
在類的內部調用slef.__private_methods
類的專有方法:
__init__構造函數,在生成對象時調用
__del__析構函數,釋放對象時使用
__repr__列印,轉換
__setitem__按照索引賦值
__getitem__按照索引獲取值
__len__獲得長度
__cmp__比較運算
__call__函數調用
__add__加運算
__sub__減運算
__mul__乘運算
__div__除運算
__mod__求余運算
__pow__稱方
示例:
[python]view plain
#類定義
classpeople:
⑻ Python-類的創建和使用
創建一個寵物 Pet 類,根據該類創建的每個實例都將存儲名字和物種,賦予每個寵物吃飯(eat())和睡覺(sleep())的能力:
根據類創建實例
調用方法
給上面的例子進行補充,設置一個寵物到家的初始時間默認值為 0,對某個屬性設定默認值可以不提供形參。
調用一下read_time()
增加一個 update_time() 的方法,指定初始時間
調用
新增一個 increment_time() 方法,表示較初始值而言增加的時間
調用
一個類繼承另一個類時,它將自動獲得另一個類的所有屬性和方法;原有的類稱為父類,而新類稱為子類。子類繼承了其父類的所有屬性和方法,同時還可以定義自己的屬性和方法。
創建一個 Cat 類,繼承 Pet 的屬性,同時可以定義 Cat 特有的屬性。
調用
如果子類中的某些屬性與父類不一樣,可以在子類新建方法重新定義來改寫父類。
類的導入和函數的導入相同。
⑼ Python元類編程 之 new、init、call
這是一個普通的類對象,其中
類對象之於實例對象,正如元類對象之於類對象,他們之間的關系是完全相同的
我們同樣可以推斷出
我們不妨根據其作用來推斷
我們在metaclass的init處打斷點,便可以看到num:10在參數當中
當然我們也可以手動定義類對象,就像創建實例那樣簡單
如果按類推,DemoMeta()是調用元類的 __ call __() 。
沒錯,是這樣,按理來說這是個無限的循環,當然實際上python解釋器不會允許這樣的情況。
唯一的不同是,有些動作,python幫我們自行實現了。例如定義類時,會自動執行元類的實例化。
⑽ Python寫一個類,能將任意多條記錄性數據寫入二進制文件,能自動讀出任意一條記錄並解碼為原始消息
importrandom
classWRB(object):
defWrite(self,Text):
withopen(r'a.text','ab')asf:
f.write((Text+' ').encode('utf-8'))
print((Text+' ').encode('utf-8'))
defRead(self):
withopen('a.text','rb')asf:
text=f.readlines()
a=random.sample(text,1)
print(a[0].decode('utf-8').strip(' '))
test=WRB()
test.Write('測試')
test.Write('測試數據2測試數據2測試數據2測試數2')
test.Read()