Python類的構造方法及繼承問題

2022-08-02 08:57:11 字數 1990 閱讀 8895

構造方法名字固定為__init__,在建立物件時會自動呼叫,用於實現類的初始化:

>>> class

person:

...

def__init__(self, name, age=0):

... self.name =name

... self.age =age

...

defget_name(self):

...

return

self.name

...

defset_name(self, name):

... self.name =name

...

defget_age(self):

...

return

self.age

...

defset_age(self, age):

... self.age =age

...>>> p = person('

韓曉萌','21'

)>>>p.get_name()

'韓曉萌

'>>>p.get_age()'21

'>>>

如果子類重寫了__init__方法,那麼在方法內必須顯式的呼叫父類的__init__方法:

# 沒有呼叫父類的__init__方法

>>> class

man(person):

...

def__init__

(self, length):

... self.length =length

...

defget_length(self):

...

return

self.length

...

defset_length(self, length):

... self.length =length

...>>> m = man('

18cm')

>>>m.get_length()

'18cm

'>>>m.get_name()

traceback (most recent call last):

file

"", line 1, in

file

"", line 6, in

get_name

attributeerror:

'man

' object has no attribute '

name

'# 呼叫了父類的__init__方法

>>> class

woman(person):

...

def__init__(self, name, age=0, cup='a'

):... super().

__init__

(name, age)

... self.cup =cup

...

defget_cup(self):

...

return

self.cup

...

defset_cup(self, cup):

... self.cup =cup

...>>> w = woman('

楊超越', 21, 'c'

)>>>w.get_cup()'c

'>>>w.get_name()

'楊超越

'>>>w.get_age()

21

繼承類構造方法使用

1,呼叫未繫結的超類構造方法 class bird def init self self.hungry true defeat self ifself.hungry print eee self.hungry false else print no,thanks print eat class so...

python類的繼承及重寫父類方法

寫python有一年多了,平日使用python解決一些問題,調一些介面,用一些框架,雖然不影響都可以寫,但一直沒有好好的花時間去理解python概念性的東西。也許,這也是寫了這麼久一直不能有所進步的原因,從今天起,來重新好好的學習一下python的相關概念。class tree def init s...

子類的構造方法必須繼承父類的構造方法

public class person public person string name public class athletes extends person person類定義了乙個有參的構造方法,athletes類中會報錯,解決辦法是person類中加乙個無參的構造方法 父類寫了有參建構函...