1. 程式人生 > 其它 >函式與方法

函式與方法

函式

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.方法不一定是方法,得看誰來呼叫,如果是物件的方法,類來調,就變成了普通函式