python def __init__(self, name等多參數), def __init__(self)


之前一直對__init__(self)里面的參數很迷茫,一會這個地方看到別人這么寫,一會看到別人那么寫,自己也不知道,到底怎么回事,有哪些區別,今天對這個內容進行了學習。進行系統的分析了解,主要從他的實例化的區別,含義的區別進行區分兩者之間的關系!

常見的兩種類的定義方式如下:

1 class Student:
2     def __init__(self):#兩者之間的區別
3         self.name = None
4         self.score = None
1     def __init__(self, name, score):
2         self.name = name
3         self.score = score

區別很明顯,前者在__init__方法中,只有一個self,指的是實例的本身,但是在方法的類部,包含兩個屬性,name, score

下面的這個即是在定義方法時,就直接給定了兩個參數,

針對這樣的兩個,之前不解的地方,是如何實例化,第二個很明顯就是直接實例化時,傳入相應的參數,而第一種,則需要實例化之后,對屬性進行賦值

1 # student = Student("sansan", 90)
2 student = Student()
3 student.name= "sansan"
4 student.score = 90
5  
6 # susan = Student("sunny", 78)
7 susan = Student()
8 susan.name = "susan"
9 susan.score = 8

即顯示了兩種實例化的方法, 注釋的部分即是在創建的時候就直接傳入參數

那么這兩者的區別,在哪里?

第一種的區別,他定義了這樣一種類,他可以是一個空的結構,比如學生的表,當學生還沒有進行考試時,他已經有了學生的姓名和成績,當新的數據來的時候,可以直接添加進來。這個可以很方便的進行,

而第二種,則需要必須傳值,不允許為空。當然第二種對於已有數據的導入是很方便的,在語句上減少了很多

 1 class Student:
 2     def __init__(self):#兩者之間的區別
 3         self.name = None
 4         self.score = None
 5  
 6     # def __init__(self, name, score):
 7     #     self.name = name
 8     #     self.score = score
 9  
10     def print_score(self):
11         print("%s score is %s" % (self.name, self.score))
12  
13     def get_grade(self):
14         if self.score >= 80:
15             return "A"
16         elif self.score >= 70:
17             return "B"
18         else:
19             return "C"
20  
21 # student = Student("sansan", 90)
22 student = Student()
23 student.name= "sansan"
24 student.score = 90
25  
26 # susan = Student("sunny", 78)
27 susan = Student()
28 susan.name = "susan"
29 susan.score = 8
30  
31 student.print_score()
32 susan.print_score()
33 print(susan.get_grade())
34 print(student.get_grade())

以上是一個很簡單的,兩者比較,

兩者都在上述代碼中進行了簡單的實現,自己進行相應的注釋


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM