python 類 如何理解python的類與物件?

2021-10-10 03:53:50 字數 3457 閱讀 7746

掛乙個自己的學習筆記

這個時間一長就搞錯了,還經常回頭來看一看,尤其是self的用法。

python中一切皆為物件,所謂物件:我自己就是乙個物件,我玩的電腦就是物件,坐著的椅子就是物件,家裡養的小狗也是乙個物件。。。。。。

我們通過描述屬性(特徵)和行為來描述乙個物件的。比如家裡的小狗,它的顏色,大小,年齡,體重等是它的屬性或特徵。它會汪汪叫,會搖尾巴等是它的行為。

我們在描述乙個真實物件(物體)時包括兩個方面:

它可以做什麼(行為)

它是什麼樣的(屬性或特徵)。

在python中,乙個物件的特徵也稱為屬性(attribute)。它所具有的行為也稱為方法(method)

結論:物件=屬性(特徵)+方法(行為)

類:在python中,把具有相同屬性和方法的物件歸為乙個類(class)

比如人類,動物,植物等等,這些都是類的概念。

類是物件的模板或藍圖,類是物件的抽象化,物件是類的例項化。類不代表具體的事物,而物件表示具體的事物。

>>> class people: #people就是類

... def speak(self):

... print ("hello!")

定義乙個people類,定義乙個speak方法,但沒有定義屬性,

因為屬性不屬於類,而是屬於各個類的例項。也就是說屬於物件。

因此我們可以給每個例項設定不同的屬性

>>> class people: #類

... def speak(self): #方法

... print ("hello!")

>>> thor = people() #建立thor例項(物件)

>>> natasha= people() #建立natasha例項

>>> import tab #匯入table鍵功能模組

>>> thor. #輸入jack.,可以看到以下方法

thor.__class__ thor.__doc__ thor.__module__ thor.speak(

>>> thor.speak() #引用speak方法

hello!

>>> thor.age=39 #新增age屬性

>>> thor.height=190 #新增height屬性

>>> thor.

thor.__class__ thor.__module__ thor.height

thor.__doc__ thor.age thor.speak(

>>> thor.height

>>> thor.age

#初始化物件

建立類時,可以定義乙個特定的方法,名為__init__(),只要建立這個類的乙個例項就會執行這個方法。可以向__init__()方法傳遞引數,這樣建立物件時就可以把屬性設定為你希望的值。__init__()這個方法會在建立物件時完成初始化,'''

>>> class peo:

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

self.name = name

self.age = age

self.*** = ***

def speak(self):

print ("my name is " + self.name)

例項化這個類的物件

>>> zhangsan=peo("zhangsan",24,'male')

>>> print (zhangsan.age)

>>> print (zhangsan.name)

zhangsan

>>> print (zhangsan.***)

male

>>> print(zhangsan)

<__main__.peo object at 0x000001790b8bfe80>

屬性和方法的使用也不一樣 />

要讓print能列印出來,就得使用__str__方法

__str__()這個方法告訴python在列印(print)乙個物件時,具體顯示什麼內容

#! /usr/bin/python

>>> class peo:

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

self.name = name

self.age = age

self.*** = ***

def speak(self):

print ("my name" + self.name)

def __str__(self):

msg=('my name is: ' +self.name+ ","+ "my age is: " + self.age +','+ "my *** is:" +self.***)

return msg

shanghai=peo('shanghai','23','man')

>>> print(shanghai)

my name is: shanghai,my age is: 23,my *** is:man

此處23是年齡,但被轉成了字串,因為self.age定義的是字串

如果不將23轉義,則會報錯

如果希望在程式中就事先轉義,需要使用str(self.age)

print shanghai

之前多次用到self這個形參

類就好比是一張藍圖,使用乙個類可以建立多個物件例項,

speak()方法在被呼叫時,必須知道是哪個物件呼叫了它.

這裡self引數就會告訴方法是哪個物件來呼叫的.這稱為例項引用。

zhangsan.speak()就好比寫成了peo.speak(zhangsan)

#道理說一萬遍,不如先嚐個栗子

直線長度

**import math #呼叫math函式

class point(): #定義點類

def __init__(self,x=0,y=0):

self.x=x

self.y=y

def getx(self):

return self.x

def gety(self):

return self.y

class line(): #定義線類

def __init__(self,p1,p2):

self.x=p1.getx()-p2.getx()

self.y=p1.gety()-p2.gety()

self.len=math.sqrt(self.x*self.x+self.y*self.y)

def getlen(self):

return self.len

執行結果

>>> p1=point(1,1)

>>> p2=point(8,10)

>>> line=line(p1,p2)

>>> line.getlen()

11.40175425099138

導航 >>>>>>

專欄(歡迎訂閱投稿)

收藏夾(歡迎閱讀分享)

python物件怎麼理解 如何理解python物件

類 class 抽象的概念,比如說人類 鳥類 水果 是乙個總的稱呼,沒有具體到某個物體 物件 object,指具體例項,instance 給物件增加乙個例項變數 增加乙個skills例項變數 p.skills programming writing print p.skills 刪除p物件的name...

python遞迴怎麼理解 理解遞迴 python

幾個小例子來理解遞迴 一 先來一點基礎的認識 1 遞迴是乙個不斷的將乙個問題分成更小的子問題最終找到乙個簡單的基礎問題,最後再由基礎問題的解決逐步向上解決初始問題的過程。所以不難看出,遞迴其實是分為兩部分的乙個是向下的遞推過程,另乙個就是向上的回溯過程。2 從上面我們已不難發現,在這個過程中,是存在...

python中如何建立包 如何建立python的包

包是模組的集合,更適合乙個專案。像很多的第三方知名的模組都是以包的形式存 簡單的包實現 自己做乙個ammd包,功能簡單的只有加減乘除等功能,加減在乙個模組matham裡,乘除位於另乙個模組裡mathmd。下面是matham模組的 def add x,y return x ydef minus x,y...