Python學習系列之類的定義、建構函式 def __init__
python def __init__(self, name等多引數), def __init__(self)
常見的兩種類的定義方式如下
#第一種
class Student:
def __init__(self):#兩者之間的區別
self.name = None
self.score = None
##第二種
def __init__(self, name, score):
self.name = name
self.score = score
區別很明顯,前者在__init__方法中,只有一個self,指的是例項的本身,但是在方法的類部,包含兩個屬性,name, score
下面的這個即是在定義方法時,就直接給定了兩個引數,
如何例項化
第二個很明顯就是直接例項化時,傳入相應的引數,而第一種,則需要例項化之後,對屬性進行賦值
# student = Student("sansan", 90)
student = Student()
student.name= "sansan"
student.score = 90
# susan = Student("sunny", 78)
susan = Student()
susan.name = "susan"
susan.score = 8
即顯示了兩種例項化的方法, 註釋的部分即是在建立的時候就直接傳入引數
兩者區別
第一種的區別,他定義了這樣一種類,他可以是一個空的結構,比如學生的表,當學生還沒有進行考試時,他已經有了學生的姓名和成績,當新的資料來的時候,可以直接新增進來。這個可以很方便的進行,
而第二種,則需要必須傳值,不允許為空。當然第二種對於已有資料的匯入是很方便的,在語句上減少了很多
class Student:
def __init__(self):#兩者之間的區別
self.name = None
self.score = None
# def __init__(self, name, score):
# self.name = name
# self.score = score
def print_score(self):
print("%s score is %s" % (self.name, self.score))
def get_grade(self):
if self.score >= 80:
return "A"
elif self.score >= 70:
return "B"
else:
return "C"
# student = Student("sansan", 90)
student = Student()
student.name= "sansan"
student.score = 90
# susan = Student("sunny", 78)
susan = Student()
susan.name = "susan"
susan.score = 8
student.print_score()
susan.print_score()
print(susan.get_grade())
print(student.get_grade())
以上是一個很簡單的,兩者比較,
參考:https://blog.csdn.net/m0_37693335/article/details/82972925
__init__的用法和理解
,兩個下劃線開頭的函式是宣告該屬性為私有,不能在類的外部被使用或訪問。而__init__函式(方法)支援帶引數類的初始化,也可為宣告該類的屬性(類中的變數)。__init__函式(方法)的第一個引數必須為self,後續引數為自己定義。__init__()這個特殊的方法就可以方便地自己對類的屬性進行定義,__init__()方法又被稱為構造器(constructor)
相關文章
- python學習總結之 函式定義defPython函式
- dart系列之:dart類中的建構函式Dart函式
- python3 筆記16.構建函式defPython筆記函式
- (十六)Python學習之內建函式Python函式
- 類的建構函式和解構函式函式
- 【C#學習筆記】類建構函式使用C#筆記函式
- C++學習筆記-----類和建構函式C++筆記函式
- 建構函式定義的隱式型別轉換函式型別
- PHP 手冊 (類與物件) 學習筆記五:建構函式和解構函式PHP物件筆記函式
- 預設建構函式學習函式
- python中的“__init__”函式Python函式
- c++ 的學習 建構函式1C++函式
- Python學習之函式Python函式
- C++ 類建構函式和解構函式C++函式
- 類中的__init__()和__call__()函式函式
- Objective-C學習筆記---建構函式和解構函式Object筆記函式
- Python學習之zip函式Python函式
- JS 建構函式與類JS函式
- Java 容器系列(七):HashMap 原始碼分析01之建構函式、內部類JavaHashMap原始碼函式
- python如何定義函式Python函式
- python---函式定義Python函式
- c++學習筆記 -- 建構函式C++筆記函式
- c# tcbs之建構函式呼叫建構函式示例C#函式
- 在 TypeScript 的類元件的建構函式中是否總是需要定義 `props` 和 `state` ?TypeScript元件函式
- 19-父類的建構函式函式
- flutter-dart 類的建構函式FlutterDart函式
- Python3.5.2 document學習系列之03、The Python Standard Library(python 標準庫)——內建函式Python函式
- qt之函式重定義QT函式
- C++語言之結構體、類、建構函式、拷貝建構函式C++結構體函式
- 建構函式之間的呼叫函式
- 重學java之類的定義Java
- 父類和子類的建構函式問題函式
- Python 中的 super(類名, self).__init__() 的含義Python
- 構建一個類jq的函式庫函式
- 什麼是Python函式?如何定義函式?Python函式
- 分類學習器的構建
- hive學習筆記之七:內建函式Hive筆記函式
- Java8學習系列之匿名函式LambdaJava函式