少說話多寫程式碼之Python學習046——類的成員(建構函式)
阿新 • • 發佈:2018-11-20
建構函式是一個類裡比較特殊的函式,一般即時不寫建構函式,類也會預設有一個預設建構函式,比如像下面這樣的,
__init__ 其實是一個預設建構函式。
class Book:
bookName='書名'
def __init__(self):
self.bookName='時間簡史'
b=Book()
print(b.bookName)
輸出
時間簡史
建構函式在類被例項化時,會第一時間被呼叫,所以一般會在建構函式中做一些初始化的事情。上面的預設建構函式,是沒有傳入任何引數的。如果想傳入引數,那麼像下面這樣寫。
class Pen:
brand='品牌'
def __init__(self,value):
self.brand=value
p=Pen('英雄')
print(p.brand)
輸出
英雄
但是這裡需要注意,Python中建構函式只能有一個,比如像這樣是會報錯的,
class Bird: name='鳥的名字' food='小蟲子' def __init__(self,bname): self.name=bname def __init__(self,bname,bfood): self.name=bname self.food=bfood bird=Bird('燕子') print('%s 吃 %s' %(bird.name,bird.food))
報異常
TypeError: __init__() missing 1 required positional argument: 'bfood'
既然可以傳入一個引數,其實多個引數也是可以的。
class Person: name='姓名' age='年齡' nativePlace='籍貫' def __init__(self,pname,page,pnativePlace): self.name=pname self.age=page self.nativePlace=pnativePlace person=Person('關羽',55,'山西運城') print('姓名:%s,年齡:%s,籍貫:%s' %(person.name,person.age,person.nativePlace))
輸出
姓名:關羽,年齡:55,籍貫:山西運城
Python中建構函式是 __init__(),可以有0個或者多個引數,但是不允許構函式過載。
工程檔案下載:https://download.csdn.net/download/yysyangyangyangshan/10794821