python之def __init__(self)和def __init__(self, 參數1,參數2,···,參數n) #類中初始化形式的區別

二者區別

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()

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章