python中calss(類)的使用,類的教程,類中的函式怎麼呼叫。
我們先來看看這個程式碼
class Computer:
screen = True
def start(self):
print('電腦正在開機中……')
my_computer = Computer()#例項化類
print(my_computer.screen)#列印類中的屬性值
my_computer.start()#啟動類中的方法
想要呼叫他語法是例項名.屬性和例項名.方法
所以說最後我們列印出的內容是
True
電腦正在開機中……
來看看怎麼才能使用類中的值:
my_computer.screen
例項名.屬性
這樣就可以呼叫類中的屬性了
my_computer.start()
例項名.方法
這樣就可以啟動類中的函式
看到這裡很多人也明白怎麼使用類了,可是發現類中函式有一個self引數這個引數有什麼作用呢?
接下來我們看
class Chinese:
name = '小張' # 類屬性name
def say(self, someone): # 帶有兩個引數的方法
print(someone + '是中國人')
person = Chinese()
print(person.name)
person.say('小張')
輸出的結果是:
小張
小張是中國人
self呼叫時要忽略,'小張’傳給引數someone
為什麼忽略self,因為self會接收例項化過程中傳入的資料,當例項物件建立後,例項便會代替 self,self 是所有例項的替身,“替身”是什麼意思呢?就如上面這個程式碼一樣,傳參直接給了someone沒有給self,因為他被忽略了,但是他是存在的,因為沒有他,函式就不是例項化中的函式,所以大家只要記得在類中函式新增上self就行了。
self總結,self就是例項化類的意思,傳參時可以忽略。
我們接著走,細心的同學會發現,我們傳的引數小張給someone,然後再列印出 小張是中國人,其實我們沒必要這麼麻煩,直接看類的屬性中有小張的引數值,直接呼叫就好了
然後你們就會想到
class Chinese:
name = '小張' # 類屬性name
def say(self): # 帶有兩個引數的方法
print(name + '是中國人')
person = Chinese()
print(person.name)
person.say()
列印出來的結果
Traceback (most recent call last):
File "one.py", line 10, in <module>
person.say()
File "one.py", line 6, in say
print(name + '是中國人')
NameError: name 'name' is not defined
報錯找到不到name,為什麼呢?我上面不是寫了嘛?因為類裡面呼叫屬性需要先加例項化,那是不是寫Chinese().name是的,這樣寫沒有錯,但是我們沒必要這樣寫呢,我們上面說過self就是類的例項化,所以我們寫成self.name 就可以呼叫屬性了,
小總結:類的屬性呼叫前面加self.屬性名就可以了。self在類中就是Chinese(),我們完全可以把全部的self寫成Chinese(),有的人類的名字很長,寫程式碼時很不有好所以出現了self,帶代替的他的存在,傳參時也不會傳給他。
有同學又問,如果類裡面有兩個方法(函式)這麼辦?我下一個方法(函式)要呼叫上一個方法(函式)這麼呼叫,同理看下面的程式碼
class Chinese:
def greeting(self):
print('很高興遇見你')
def say(self):
self.greeting()
print('我來自中國')
person = Chinese()
# 建立例項person
person.say()
# 呼叫say()方法
我們只要在前面加上一個self(例項)就可以了。大家可以複製程式碼到編譯器看看。
綜上,所以我們說self代表的是類的例項本身,方便資料的流轉。對此,我們需要記住兩點:
第一點:只要在類中用def建立方法時,就必須把第一個引數位置留給 self,並在呼叫方法時忽略它(不用給self傳參)。
第二點:當在類的方法內部想呼叫類屬性或其他方法時,就要採用self.屬性名或self.方法名的格式。
接下來我們說說類中的初始化
定義初始化方法的格式是def init(self),是由init加左右兩邊的【雙】下劃線組成( initialize “初始化”的縮寫)。
初始化方法的作用在於:例項物件建立時,該方法內的程式碼無須呼叫就會自動執行。
我們看下面的程式碼
class Chinese:
def __init__(self):
print('很高興遇見你,我是初始化方法')
person = Chinese()
執行出來的結果
很高興遇見你,我是初始化方法
少了一個呼叫的函式 person.__ init __()
為什麼呢?因為他時初始化,只要類的例項化建立出來就會自動執行,好比方說,你開啟電腦,他會自動載入C盤上的系統檔案,直到你開啟電腦桌面為止,剩下的才是你操作的內容,前面開啟電腦的過程都叫做類的初始化,自動執行了。
這時候有同學問,那我再初始化寫一些程式碼賦值給函式,能呼叫嗎?
在初始化中所有程式碼都是可以呼叫的,同理,在前面加一個self看下面的例子
class Chinese:
def __init__ (self):
self.mouth = 1 # self.不能丟
self.eye = 2
def body(self):
print('我有%s張嘴巴' % self.mouth)
print('我有%s隻眼睛' % self.eye)
person = Chinese()
person.body()
執行出來的結果就是
我有1張嘴巴
我有2隻眼睛
這樣大家應該也明白怎麼建立類,怎麼使用類的函式,怎麼呼叫類的函式了把,大家還有什麼不懂的問題可以方便留言在下方,我會更新文件內容。喜歡的方便加關注點贊,感謝啦。
相關文章
- 如何使用函式指標呼叫類中的函式和普通函式函式指標
- java中的抽象類abstract怎麼使用?Java抽象
- 如何使用python super函式呼叫父類?Python函式
- Python 中的類(中)Python
- php中呼叫類的屬性和函式的方法->_=>_::_$this->區別PHP函式
- Java中的基本型別包裝類 Integer 類該怎麼使用?Java型別
- 轉:類似SQL中的split函式SQL函式
- 子父類中函式函式
- 動態呼叫python類和函式Python函式
- toLua中Lua呼叫C#中的類C#
- 類中的__init__()和__call__()函式函式
- Python中,類的特殊方法與內建函式的關聯Python函式
- 類的對過載函式的呼叫不明確函式
- 呼叫類庫函式的簡單加密(轉的)函式加密
- python類中的方法Python
- 父類與子類之間靜態函式的呼叫以及函式引數的傳遞函式
- 基類中定義的虛擬函式,子類中必須要覆蓋嗎?為什麼?函式
- php中呼叫類的私有方法PHP
- 使用Python中的字典模擬類Python
- python中類中 引數的靈活使用Python
- 前端常用的工具類函式, 持續更新中前端函式
- dart系列之:dart類中的建構函式Dart函式
- Java中的Reference類使用Java
- Python中的類和物件是什麼Python物件
- Python中的類與物件Python物件
- Python中類的定義Python
- python中的元類MetaclassPython
- 理解Python中的元類Python
- C++:建構函式的分類和呼叫C++函式
- 如何在java類中呼叫websphere中的jndi物件JavaWeb物件
- Python中的類和物件(中級)Python物件
- MFC之動態呼叫自己寫的類庫中的類的成員方法
- Python中類的建立和使用方法Python
- Python中類的建立與使用例項Python
- python中類物件及類屬性的介紹Python物件
- 在 C++ 中子類繼承和呼叫父類的建構函式方法C++繼承函式
- 在C++中子類繼承和呼叫父類的建構函式方法C++繼承函式
- Java中,類與類,類中的程式碼執行順序Java