python寫類
同:
都有類變數,Java中也叫靜態變數
都有構造函數
都有實例方法
異:
語法寫的時候Python class名稱後面帶(),而Java聲明類需要指定類的類型
java中的實例變數需要聲明,而Python中不用聲明直接在構造函數中用self.name指定就可以了
python貌似沒有類方法
聲明一個對象的時候Java 在聲明一個新的對象的時候,先執行類變數的載入,如果有父類,先載入父類的變數;然後執行實例變數的載入;然後執行構造函數,如果父類有默認的構造函數,先執行父類的構造函數,然後再執行子類的構造函數 如果父類不存在默認的構造方法,則子類必須通過super調用父類的構造方法 |||||||||||python不會默認執行父類的構造方法,除非指定super().__init__()
Java中.java的名字和該文件中的類必須是同名的 例如Car.java 中必須有一個pulic class Car;python中文件名和文件中類的名字不用對應,例如my_car.py中可以寫一個class Car(),並且一個.py中文件中可以出現多個並列的類
python中一個類可以作為實例變數
Ⅱ Python寫類
創建類的方法比較簡單,如下:
class Person:
注意,類的名稱一般用大寫字母開頭,這是慣例。當然,如果故意不遵循此慣例,也未嘗不可,但是,會給別人閱讀乃至於自己以後閱讀帶來麻煩。既然大家都是靠右走的,你就別非要在路中間睡覺了。
接下來,一般都要編寫構造函數,在寫這個函數之前,先解釋一下什麼是構造函數。
復制代碼 代碼如下:
class Person:
def __init__(self, name, lang, website):
self.name = name
self.lang = lang
self.website = website
上面的類中,首先呈現出來的是一個名為:__init__()的函數,注意,這個函數是以兩個下劃線開始,然後是init,最後以兩個下劃線結束。這是一個函數,就跟我們此前學習過的函數一樣的函數。但是,這個函數又有點奇特,它的命名是用「__」開始和結束。
請看官在這里要明確一個基本概念,類就是一種對象類型,和跟前面學習過的數值、字元串、列表等等類型一樣。比如這里構建的類名字叫做Person,那麼就是我們要試圖建立一種對象類型,這種類型被稱之為Person,就如同有一種對象類型是list一樣。
在構建Person類的時候,首先要做的就是對這種類型進行初始化,也就是要說明這種類型的基本結構,一旦這個類型的對象被調用了,第一件事情就是要運行這個類型的基本結構,也就是類Person的基本結構。就好比我們每個人,在頭腦中都有關於「人」這樣一個對象類型(對應著類),一旦遇到張三(張三是一個具體人),我們首先運行「人」這個類的基本結構:一個鼻子兩隻眼,鼻子下面一張嘴。如果張三符合這個基本機構,我們不會感到驚詫(不報錯),如果張三不符合這個基本結構(比如三隻眼睛),我們就會感到驚詫(報錯了)。
由於類是我們自己構造的,那麼基本結構也是我們自己手動構造的。在類中,基本結構是寫在__init__()這個函數裡面。故這個函數稱為構造函數,擔負著對類進行初始化的任務。
還是回到Person這個類,如果按照上面的代碼,寫好了,是不是__init__()就運行起來了呢?不是!這時候還沒有看到張三呢,必須看到張三才能運行。所謂看到張三,看到張三這樣一個具體的實實在在的人,此動作,在python中有一個術語,叫做實例化。當類Person實例化後立刻運行__init__()函數。
Ⅲ Python類的繼承與多態詳細介紹
類(Class): 用來描述具有相同的屬性和方法的對象的集合。
類變數:類變數在整個實例化的對象中是公用的。類變數定義在類中且在函數體之外。類變數通常不作為實例變數使用。
類有一個名為 __init__() 的特殊方法(構造方法),該方法在類實例化時會自動調用
self:self 代表的是類的實例,代表當前對象的地址,而 self.class 則指向類。
類調用 Car.weight
實例化 car01=Car(5)
實例對象調用 car01.weght
我們在構造類時,Python3默認我們繼承了object這個基類,我個人理解object就是個空的類,可以不用管為何要在括弧中寫上object,這是Python3的特性,在python2中如果你沒有寫object的話不會默認繼承了object這個基類。
同樣的我們自己希望繼承的父類只需要把objetc改為我們自己定義的類名即可。子類中可以擁有父類中所有的公有屬性和方法,但是可以通過在變數名前加下劃線使其變為私有,這樣子類就不可以訪問父類中的成員了。
以下三個公交車類的父類均為客車類,我們可以寫一個funcs方法使得每次調用funcs方法時,傳入不同的對象以執行不同的func方法,具體實現如下:
主函數 :
可以看到,我將小 汽車 實例化為帶有重量為5t的一個具體對象,將客車實例化為帶有重量為20t的一個具體對象,將三個公交車實例化為帶有重量為15t的一個具體對象.
如上圖所示,我每次在調用funcs方法時都傳入了一個實例化對象,funcs根據不同的對象執行相應的內部方法。
Ⅳ python中如何定義類
輸入class ......(......處自己寫):
然後在四個空格後面輸入def ......(......)(建議加一個self)
Ⅳ python類的定義與使用是什麼
類Class:用來描述具體相同的屬性和方法的對象的集合。定義了該集合中每個對象所共有的屬性和方法。對象是類的示例。
類定義完成時(正常退出),就創建了一個 類對象。基本上它是對類定義創建的命名空間進行了一個包裝;我們在下一節進一步學習類對象的知識。原始的局部作用域(類定義引入之前生效的那個)得到恢復,類對象在這里綁定到類定義頭部的類名(例子中是 ClassName )。
基本語法
Python的設計目標之一是讓代碼具備高度的可閱讀性。它設計時盡量使用其它語言經常使用的標點符號和英文單字,讓代碼看起來整潔美觀。它不像其他的靜態語言如C、Pascal那樣需要重復書寫聲明語句,也不像它們的語法那樣經常有特殊情況和意外。
以上內容參考:網路-Python
Ⅵ 用Python的類與對象
class Student():
def __init__(self,name,age,score):
self.name = name
self.age = age
self.score = score
def get_name(self):
return self.name
def get_age(self):
return self.age
def get_course(self):
return max(self.score)
st = Student('張三', 20, [150, 88, 100])
print(st.get_name())
print(st.get_age())
print(st.get_course())
Ⅶ 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()
Ⅷ 用python3寫"類",總是報錯AttributeError: 'Mystuff' object has no attribute ''first"
print(thing.first) 這一句是調用 thing 的 first 屬性
實際上就是調用 Mystuff 類的 first 屬性
但是 Mystuff 這個類的 first 屬性沒有定義
所以會報錯
Ⅸ 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: