1. 程式人生 > >少說話多寫程式碼之Python學習046——類的成員(建構函式)

少說話多寫程式碼之Python學習046——類的成員(建構函式)

建構函式是一個類裡比較特殊的函式,一般即時不寫建構函式,類也會預設有一個預設建構函式,比如像下面這樣的,
__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