我們先來看看這個代碼
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只眼睛
這樣大家應該也明白怎么創建類,怎么使用類的函式,怎么呼叫類的函式了把,大家還有什么不懂的問題可以方便留言在下方,我會更新檔案內容,喜歡的方便加關注點贊,感謝啦,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/167243.html
標籤:其他
