- 1、python中類對象的理解總結?
- 2、Python的類和對象入門
- 3、如何理解python的類與對象
- 4、python什麼是類,對象,實例
9.3.2. 類對象
類對象支持兩種操作:屬性引用和實例化。
屬性引用 使用和 Python 中所有的屬性引用一樣的標準語法:obj.name。類對象創建後,類命名空間中所有的命名都是有效屬性名。所以如果類定義是這樣:
class MyClass:
“””A simple example class”””
i = 12345
def f(self):
return ‘hello world’
那麼 MyClass.i 和 MyClass.f 是有效的屬性引用,分別返回一個整數和一個方法對象。也可以對類屬性賦值,你可以通過給 MyClass.i 賦值來修改它。 __doc__ 也是一個有效的屬性,返回類的文檔字符串:”A simple example class”。
類的 實例化 使用函數符號。只要將類對象看作是一個返回新的類實例的無參數函數即可。例如(假設沿用前面的類):
x = MyClass()
以上創建了一個新的類 實例 並將該對象賦給局部變量 x。
這個實例化操作(“調用”一個類對象)來創建一個空的對象。很多類都傾向於將對象創建為有初始狀態的。因此類可能會定義一個名為 __init__() 的特殊方法,像下面這樣:
def __init__(self):
self.data = []
類定義了 __init__() 方法的話,類的實例化操作會自動為新創建的類實例調用 __init__() 方法。所以在下例中,可以這樣創建一個新的實例:
x = MyClass()
當然,出於彈性的需要,__init__() 方法可以有參數。事實上,參數通過 __init__() 傳遞到類的實例化操作上。例如,
class Complex:
… def __init__(self, realpart, imagpart):
… self.r = realpart
… self.i = imagpart
…
x = Complex(3.0, -4.5)
x.r, x.i
(3.0, -4.5)
本文來說說Python中的類與對象,Python這門語言是無處不對象,如果你曾淺要了解過Python,你應該聽過Python是一種面向對象編程的語言,所以你經常可能會看到面向“對象”編程這類段子,而面向對象編程的語言都會有三大特徵:封裝、繼承、多態。
我們平時接觸到的很多函數、方法的操作都具有這些性質,我們只是會用,但還沒有去深入了解它的本質,下面就介紹一下關於類和對象的相關知識。
封裝這個概念應該並不陌生,比如我們把一些數據封裝成一個列表,這就屬於數據封裝,我們也可以將一些代碼語句封裝成一個函數方便調用,這就是代碼的封裝,我們也可以將數據和代碼封裝在一起。用術語表示的話,就是可以將屬性和方法進行封裝,從而得到對象。
首先我們可以定義一個類,這個類中有屬性和方法,但有的夥伴會比較好奇,屬性和方法不是會封裝成對象嘛,為什麼又變成類了?舉個例子,類就好比是一個毛坯房,而對象是在毛坯房的基礎上改造成的精裝房。
在類定義完成時就創建了一個類對象,它是對類定義創建的命名空間進行了一個包裝。類對象支持兩種操作:屬性引用和實例化。
屬性引用的語法就是一般的標準語法:obj.name。比如XiaoMing.height和XiaoMing.run就是屬性引用,前者會返回一條數據,而後者會返回一個方法對象。
這裡也支持對類屬性進行賦值操作,比如為類中的weight屬性賦予一個新值。
而類的實例化可以將類對象看作成一個無參函數的賦值給一個局部變量,如下:
ming就是由類對象實例化後創建的一個實例對象,通過實例對象也可以調用類中的屬性和方法。
類在實例化過程中並不都是像上面例子一樣簡單的,一般類都會傾向將實例對象創建為有初始狀態的,所以在類中可能會定義一個__init__的魔法方法,這個方法就可以幫助接收、傳入參數。
而一個類如果定義了__init__方法,那麼在類對象實例化的過程中就會自動為新創建的實例化對象調用__init__方法,請看下面這個例子。
可以看到在__init__()中傳入了參數x和y,然後在print_coor中需要接收參數x和y,接下來通過實例化這個類對象,驗證一下參數是否能通過__init__()傳遞到類的實例化操作中。
所謂繼承就是一個新類在另一個類的基礎上構建而成,這個新類被稱作子類或者派生類,而另一個類被稱作父類、基類或者超類,而子類會繼承父類中已有的一些屬性和方法。
比如上面這個例子,我並沒有將list_定義成一個列表,但它卻能調用append方法。原因是類Mylist繼承於list這個基類,而list_又是Mylist的一個實例化對象,所以list_也會擁有父類list擁有的方法。當然可以通過自定義類的形式實現兩個類之間的繼承關係,我們定義Parent和Child兩個類,Child中沒有任何屬性和方法,只是繼承於父類Parent。
當子類中定義了與父類中同名的方法或者屬性,則會自動覆蓋父類對應的方法或屬性,還是用上面這個例子實現一下,方便理解。
可以看到子類Child中多了一個和父類Parent同名的方法,再實例化子類並調用這個方法時,最後調用的是子類中的方法。Python中繼承也允許多重繼承,也就是說一個子類可以繼承多個父類中的屬性和方法,但是這類操作會導致代碼混亂,所以大多數情況下不推薦使用,這裡就不過多介紹了。
多態比較簡單,比如定義兩個類,這兩個類沒有任何關係,只是兩個類中有同名的方法,而當兩個類的實例對象分別調用這個方法時,不同類的實例對象調用的方法也是不同的。
上面這兩個類中都有introduce方法,我們可以實例化一下兩個類,利用實例對象調用這個方法實現一下多態。
判斷一個類是否是另一個類的子類,如果是則返回True,反之則返回False。
需要注意的有兩點:
判斷一個對象是否為一個類的實例對象,如果是則返回True,反之則返回False。
需要注意的有兩點:
判斷一個實例對象中是否包含一個屬性,如果是則返回True,反之則返回False。
需要注意的是第二個參數name必須為字符串形式傳入,如果不是則會返回False。
1.萬物皆對象,把對象歸類就有了類;
類也是對象,把類歸了類就是超類;
以此類推.
2.對象往往具備(也可以不具備) 行為和屬性.
行為我們通常用 函數(function) 實現
屬性(attribute)我們通常用 變量 實現
3.因為萬物皆對象,所以”函數””變量”也是對象
所以 “變量”可以有自己的”函數”, “函數”也可以有自己的變量.
4.藉此機會練習五筆,所以故意多打了一些字.
類和對象
對象是什麼?
對象=屬性(靜態)+方法(動態);
屬性一般是一個個變量;方法是一個個函數;
#類的屬性 就是 類變量
#實例變量:定義在方法中的變量,只作用於當前實例的類。
例子:
class Turtle:#python 中類名約定以大寫字母開頭
”’關於類的簡單例子。。。”’
#屬性 == 類變量
color =”green”
weight=”10kg”
legs=4
shell=True
mouth=’big’
#方法
def climb(self):
self.name = “test” #實例變量:定義在方法中的變量,只作用於當前實例的類。
print(“我在很努力爬。”)
def run(self):
print(‘我在很努力跑。’)
def bite(self):
print(‘我要要要要要’)
def sleep(self):
print(‘我要睡覺啦。’)
#創建一個實例對象也就是類的實例化!
tt =Turtle() #類的實例化,也就是創建一個對象,類名約定大寫字母開頭
tt.bite() #創建好類後就能調用類裡面的方法叻;
tt.sleep()
原創文章,作者:UNMVB,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/127205.html