函式與方法
阿新 • • 發佈:2021-09-01
函式
def test(a,b)
print(a,b)
print('test')
# 有幾個引數,就傳幾個引數
test(1,2)
方法
# 定義在類當中有特殊含義的,會自動傳值的 class Person(objact): # 1.沒有任何裝飾器裝飾,繫結給物件的方法 # 特殊之處,物件來呼叫,會自動傳值,把物件當作第一個引數傳進來 def print_name(self): print(self.name) # 2.繫結給類的方法 # 特殊之處:類來呼叫,會自動傳值,把類當作第一個引數傳經來 @classmethod def test1(cls): print('類方法') # 靜態方法 @staticmethod def test2(): # 有幾個引數,傳幾個引數,嚴格意義不能叫方法 print('靜態方法') # 繫結給物件的方法和靜態方法 p = Person() # p = Person(name = 'richer') 這裡是name是寫不進去的,因為沒有寫init,父類有init,但沒有東西 p.name = 'richer' p.print_name() p.test2() # 繫結給類的方法和靜態方法 Person.test1() Person.test2() # 邦定給類的方法,物件可以呼叫,也會自動把類傳入 p = Person() p.test2() # 繫結給物件的方法,類可以呼叫,但是方法變成了普通函式,有幾個值,就傳幾個值 p = Person() p.name = 'richer' # 不定義name報錯 name 'p' is not defined Person.print_name(p) # 不傳p,報錯print_name() missing 1 required positional argument: 'self'
總結
1.方法會自動傳值
2.函式有幾個引數就得傳幾個值
3.方法不一定是方法,得看誰來呼叫,如果是物件的方法,類來調,就變成了普通函式