1. 程式人生 > >python學習之-物件的的初始化與__init__方法

python學習之-物件的的初始化與__init__方法

 

class OldboyStudent:
# name='xxxx'
# 相似的特徵:
school = 'oldboy'

# 相似的技能
def choose_course(self):
print('choosing course....')

stu1=OldboyStudent()
stu2=OldboyStudent()
stu3=OldboyStudent()

物件的本質也是一個名稱空間
stu1.name='王三炮'
stu1.gender='male'
stu1.age=38

stu2.name='王二炮'
stu2.gender='male'
stu2.age=18

stu3.name='王大炮'
stu3.gender='female'
stu3.age=48

PS:上面的列子對於相同的特徵都是用重複程式碼寫入,這樣的寫法是可以改進的

 

改進一

def init(obj,name,gender,age): 
obj.name=name
obj.gender=gender
obj.age=age

init(stu1,'王三炮','male',18)
init(stu2,'王二炮','male',18)
init(stu3,'王大炮','female',48)

print(stu1.__dict__) #檢視有沒有增加成功
print(stu2.__dict__)
print(stu3.__dict__)

PS:將相同的特徵放入一個函式中,呼叫的時候傳入引數,但是每次都要重複寫呼叫,其實重複寫呼叫也可以簡化

 

改進二

class OldboyStudent:
count=0
# 相似的特徵:
school = 'oldboy'

def __init__(self,name,gender,age): #一定不能有返回值
OldboyStudent.count+=1
self.name=name
self.gender=gender
self.age=age

# 相似的技能
def choose_course(self,x):
print('%s choosing course....' %self.name)

PS:把函式放入類體的內部,然後想要每次呼叫類的時候自動執行,就要用一個內建方法__init__

PS:__init__方法會在物件的定義階段執行,也就是類的呼叫過程中執行,物件的定義就是類的呼叫

1、類呼叫階段會產生一個空物件

2、會觸發類的函式__init__的執行,將空物件連同呼叫用時括號內指定的引數一同傳入,如:空物件.__init__('王三炮','male',18)===> OldboyStudent.__init__(空物件,'王三炮','male',18)

stu1=OldboyStudent('王三炮','male',18)  #創造物件的時候傳入值,然後將返回值返回給stu1

stu2=OldboyStudent('王二炮','male',18)

stu3=OldboyStudent('王大炮','female',48)

print(stu1.__dict__)  #檢視有沒有新建成功

 

PS:__init__內寫的為物件定製自己獨有特徵的程式碼,__init__不能有返回值