python物件導向筆記

2021-09-11 04:17:50 字數 4739 閱讀 3016

封裝繼承

多型

class

man:

defeat

(self)

:print

("吃"

)def

slpee

(self)

:print

("睡"

)# 建立乙個例項

xm = man(

)xm.eat(

)

例項就是類建立出來的物件

#	dir

defdemo()

:'''test'''

print

("這是乙個函式"

)print

(dir

(demo)

)

print

(xm)

# <__main__.man object at 0x0000023a821c5be0>

# man是乙個類

xm = man(

)xh = xm

print

(xh)

#<__main__.man object at 0x0000013814155cc0>

print

(xm)

#<__main__.man object at 0x0000013814155cc0>

xm.name =

"小明"

class

man:

def__init__

(self,name ="")

:# __init__內定義類的屬性

self.name = name

class

man:

def__del__

(self)

:pass

__ str__必須的返回乙個字串

class

man:

def__str__

(self)

:return self.name

python本身沒有任何機制阻止你幹壞事,一切全靠自覺!!!

class

women

(object):

"""docstring for women"""

def__init__

(self,name,):

self.name = name

# 私有屬性

self.__age =

18#私有方法

def__secret

(self)

:print

("我今年%d歲了"

%(self.__age)

)xh = women(

"小紅"

)

如果外界需要訪問私有屬性name我們可以給類增加get_name()函式

如果外界需要修改私有屬性name我們可以給類增加set_name()函式

私有變數的訪問繼承分為單繼承多繼承

繼承是指:子類從父類 中依據父類的屬性和方法的訪問許可權,繼承屬性和方法

# 單繼承簡例

class

animal

(object):

defeat

(self)

:print

("吃"

)class

cat(animal)

:pass

xm = cat(

)xm.eat(

)# 吃

使用類名.__mro__檢視類的都方法解析順序

# 多繼承簡例

class

animal

(object):

defeat

(self)

:print

("吃"

)class

dog(animal)

:def

dark

(self)

:print

("汪汪汪!!!"

)class

cat(animal)

:def

catch_mouse

(self)

:print

("抓老鼠"

)class

goddog

(dog,cat)

:pass

# 神犬旺財 會汪汪叫也會抓老鼠

wc = goddog(

)wc.dark(

)wc.catch_mouse(

)# 檢視mro順序

print(goddog.__mro__)

在定義類的時候如果沒有父類,統一使用object

py3的直譯器也會預設用object

不同的子類物件 呼叫相同的父類方法,產生不同的結果

增加**的靈活性

以繼承和重寫父類方法為前提

是呼叫方法的技巧,不會影響類的內部設計

# 多型簡例

class

dog(

object):

def__init__

(self,name)

: self.name = name

defgame

(self)

:print

("在地上玩耍"

)class

goddog

(dog)

:''' dog 的 __init__ 也會被繼承'''

defgame

(self)

:print

("狗上天"

)class

person()

:def

__init__

(self,name)

: self.name = name

defgamewithdog

(self,dog)

:print

("%s 和 %s 快樂的玩耍"

%(self.name,dog.name)

) dog.game(

)xm = person(

"小明"

)xh = dog(

"小黑"

)wc = goddog(

"旺財"

)xm.gamewithdog(wc)

不需要建立物件,不會隱式傳遞self呼叫靜態方法不需要建立物件

# 靜態方法

class

time

(object):

def__init__

(self)

:pass

@staticmethod

deftime()

:print

("滴答滴答"

)# 呼叫靜態方法不需要建立物件

time.time(

)

# 類屬性簡例

class

gun(

object):

"""槍類 gun_count:記錄槍的數量"""

gun_count =

0def

__init__

(self, name)

: self.name = name

# 注意語法 類名.類屬性

gun.gun_count +=

1def

__del__

(self)

:# 類名.類屬性

gun.gun_count -=

1t1 = gun(

"手槍"

)t2 = gun(

"vector"

)print

(gun.gun_count)

# 也可以使用變數名來查詢類屬性

# 類方法

class

gun(

object):

"""槍類"""

def__init__

(self, name)

: self.name = name

@classmethod

defshut

(cls)

:print

("xiu~~~"

)t2 = gun(

"vector"

)gun.shut(

)t2.shut(

)

注意語法格式:

類方法前面需要用修飾器@classmethod來標識,告訴直譯器這是乙個類方法

和物件的第乙個引數必須是self一樣,類方法第乙個引數必須是cls

在方法內部:

python 物件導向筆記

python 物件導向小結,最近在學習python,在學習到物件導向時有些記不住,特寫此筆記 1.定義類 class people num 0 def sayhello self print hello 2.定義物件 p people p.sayhello 3.建構函式 init class peo...

Python物件導向筆記

1.最簡單的類的定義 class student name lili age 0 sum1 0def init self,name,age,sum1 建構函式 self.name name self.age age self.sum1 sum1 defprint msg self print sel...

Python 物件導向(筆記)

標籤 空格分隔 2018 05 10 類 具有相同屬性和方法的物件集合 物件 萬物皆物件,具體實物和行為 類的建立 class cat 貓類 age 1 類成員,特徵 建立建構函式 def init self,name,color self.name name self.color color re...