構造方法和其他普通方法不同的地方在於,當乙個物件被建立後,會立即呼叫構造方法。
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關鍵字進行修飾。如果在類定義的構造方法都不是無參構造方法例項化乙個物件時,那麼編譯器也不會為類設定乙個預設的無參構造方法,當試圖無參構造方法例項化乙...