python3(一) 類與函式的定義、使用
秋招結束,期間一直採用java刷題,python的熟練程度下降,因此決定重新撿回python。
一、類的定義
參考了:https://blog.csdn.net/weixin_44831484/article/details/90339650
1 class Person: 2 def __init__(self, xName, xAge): 3 self.name = xName 4 self.age = xAge 5 #能否過載 6 def printPeson1(self,tmp): 7 print("My name is {}, My age is {} and sex is {}".format(self.name,self.age,tmp)) 8 def printPeson2(self): 9 print("My name is {}, My age is {}".format(self.name,self.age)) 10 11 #例項化類 12 person = Person('lily',22) 13 #呼叫類成員函式,有參,無參 14 person.printPeson1('felman') 15 person.printPeson2() 16
總結:
1.class小寫,類名Person首字母大寫
2.無花括號{},用冒號:
3.例項化時無new,直接類名(),Person()。括號中的引數與初始化函式__init__()中傳入的一致
二、初始化函式__init__()與self
參考了 https://www.cnblogs.com/ant-colonies/p/6718388.html
__init__(): 為類的初始化函式,在java中類名(),Person(){}為初始化函式。在例項化物件時,會呼叫初始化函式,傳入引數。所以是例項化時,傳入的引數與初始化函式的引數一致。
public class Person{ String name; int age; //初始化函式 Person(String xName, intxAge){ // name = xName; // age = xAge; // 也可以寫成: this.name = xName; this.age = xAge; } }
python類中的self與Java類中的this是類似的,代表該類當前物件。
在類的程式碼(函式)中,需要訪問當前的例項中的變數和函式的,即,訪問Instance中的:
-
對應的變數(屬性,property):Instance.ProperyNam,去讀取之前的值和寫入新的值
-
呼叫對應函式(function):Instance.function(),即執行對應的動作
-> 而需要訪問例項的變數和呼叫例項的函式,當然需要對應的例項Instance物件本身
-> 而Python中就規定好了,成員函式的第一個引數,就必須是例項物件本身,並且建議,約定俗成,把其名字寫為self
-> 所以,我們需要self(需要用到self)
而如果沒有用到self,即程式碼中,去掉self後,那種寫法所使用到的變數,實際上不是你所希望的,不是真正的例項中的變數和函式,而是的訪問到了其他部分的變數和函數了。甚至會由於沒有合適的初始化例項變數,而導致後續無法訪問的錯誤。