python在外部給類或例項新增成員函式
阿新 • • 發佈:2021-01-20
技術標籤: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)
又是可以正常顯示的,暫時不知道為什麼