Python之構造方法 超類 迭代器

2021-07-30 19:35:49 字數 1588 閱讀 6876

構造方法和其他普通方法不同的地方在於,當乙個物件被建立後,會立即呼叫構造方法。

python中建立乙個構造方法,只要把init方法的名字從簡單的init修改為魔法版本 __init__即可:

class

foobar:

def__init__

(self):

self.somevar=42

>>>f=foobar()

>>>f.somevar

使用super函式

__metaclass__type

class

bird:

def__init_

(self):

self.hungry=true

defeat

(self):

if self.hungry:

print

'aaaah...'

self.hungry=false

else:

print

'no,thanks!'

class

songbird

(bird):

def__init__

(self):

super(songbird,self).__init__()

self.sound='squawk!'

defsing

(self):

print self.sound

__iter__ 方法會返回乙個迭代器(iterator),所謂迭代器就是具有next方法。

斐波那契數

class

fibs:

def__init__

(self)

self.a=0

self.b=1

defnext

(self):

self.a,sellf.b=selfb,self.a+self.b

return self.a

def__iter__

(self)

return

self

>>>fibs=fibs

() 產生乙個fibs物件

>>>forfin

fibs:

if f>1000:

print f

break

1597

注意:正式的說法是,乙個實現了__iter__方法的物件是可迭代的,乙個實現了next方法的物件則是迭代器。

使用list構造方法顯式地將迭代器轉化為列表

class

testiterator:

value=0

defnext

(self):

self.value+=1

if self.value > 10: raise stopiteration

return self.value

def__iter__

(self):

return self

>>>ti=testiterator()

>>>list(ti)

super呼叫超類建構函式

一 super呼叫超類建構函式 super parameter list parameter list指定超類中建構函式所需的任何形參,super 必須是在子類建構函式中執行的第乙個語句。超類定義的任何形式的建構函式都可以被super 呼叫,被執行的建構函式就是與實參相匹配的那乙個。當存在多重繼承時...

類的構造方法

類的構造方法 構造方法用來建立物件,並且可在建構函式中對物件進行初始化。建構函式是用來建立物件的特殊方法,方法名和類名一樣,沒有返回值,連void都不用 建構函式可以滅有引數,new物件的時候傳遞函式引數即可 如果不指定建構函式,則類有乙個預設的無參建構函式 如果制定了建構函式,則不再有預設的無參建...

類的構造方法

在定義構造方法時,構造方法沒有返回值,普通沒有返回值的方法使用public void methodex 這種形式進行定義,但構造方法並不需要使用void關鍵字進行修飾。如果在類定義的構造方法都不是無參構造方法例項化乙個物件時,那麼編譯器也不會為類設定乙個預設的無參構造方法,當試圖無參構造方法例項化乙...