二者區別
class Student:
#初始化形式1
def __init__(self):
self.name = None
self.score = None
#初始化形式2
def __init__(self, name, score):
self.name = name
self.score = score
區別很明顯:
- 前者在__init__方法中,只有一個self,指的是實例的本身,但是在方法的類部,包含兩個屬性,name, score
- 後者即是在定義方法時,就直接給定了兩個參數。
第一種,需要實例化之後,對屬性進行賦值。
第二種,就是直接實例化時,傳入相應的參數
兩種方法的區別在於定義函數時屬性賦值是否允許爲空和實例化時是否直接傳入參數。
個人覺得第二種更爲簡潔。
形式1:def init(self)
這種形式在__init__方法中,只有一個self,指的是實例的本身,但是在方法的類部,包含兩個屬性,name, grade。它允許定義一個空的結構,當新數據來時,可以直接添加。
實例化時,需要實例化之後,再進行賦值。
class Student:
def __init__(self):
self.name = None
self.score = None
def print_score(self):
print("%s score is %s" % (self.name,self.score))
if __name__ == '__main__':
s1 = Student() # 創建對象s1
s1.name = "Tom"
s1.score = 98
s2 = Student() # 創建對象s2
s2.name = "Jerry"
s2.score = 76
s1.print_score()
s2.print_score()
形式2:def init(self, 參數1,參數2,···,參數n)
這種形式在定義方法時,就直接給定了兩個參數name和grade,且屬性值不允許爲空。
實例化時,直接傳入參數。
self是形式參數,
當執行s1 = Student(“Tom”, 88)時,self=s1;
當執行s2 = Student(“sunny”, 76)時,self=s2。
class Student:
def __init__(self, name, score):
self.name = name
self.score = score
def print_score(self):
print("%s score is %s" % (self.name,self.score))
if __name__ == '__main__':
s1 = Student("Tom", 88) # 創建對象s1
s2 = Student("Jerry", 76) # 創建對象s2
s1.print_score()
s2.print_score()