1. 程式人生 > 其它 >python在外部給類或例項新增成員函式

python在外部給類或例項新增成員函式

技術標籤:python

給例項新增或者修改成員函式

import types
class People():
    def __init__(self):
        self.age=10
        self.name='Bob'
    def show_age(self):
        print(self.age)

def show_name(self):
    print(self.name)

def show_age_new(self):
    print(self.age+1)

p=People()
p.show_name = types.MethodType(
show_name,p) p.show_name() p.show_age = types.MethodType(show_age_new,p) p.show_age()

給類新增或者修改成員函式

class People():
    def __init__(self):
        self.age=10
        self.name='Bob'
    def show_age(self):
        print(self.age)

def show_name(self):
    print(self.name)

def show_age_new(self):
    print
(self.age+1) People.show_age = show_age_new p=People() p.show_age() '''等效於People.show_age(p)'''

p=People()
如果用
p.show_age = show_age_new
再呼叫
p.show_age()
會報缺少引數,沒找出什麼原因
把修改前後的show_age進行變數檢視
p=People()
print(type(p.show_age))   # <class 'method'>
p.show_age = show_age_new
print(type(p.show_age)
) # <class 'function'> 說明賦值進去的成員函式其實上已經變成了一個普通的函式 但是如果用 p.show_age(p) 又是可以正常顯示的,暫時不知道為什麼