#定义一个类
class Cat(object):
pass
#实例话一个Cat对象
c = Cat()
#向类中动态添加属性
c.color = "white"
print(c.color)
结果为:
white
如果依照相同的方法添加方法,则:
#定义一个类
class Cat(object):
pass
#实例话一个Cat对象
c = Cat()
#向类中动态添加属性
c.color = "white"
print(c.color)
def eat(self):
print("猫在吃东西。。")
c.eat = eat
c.eat()
这时,结果为:
white
Traceback (most recent call last):
File "向类中动态添加方法.py", line 16, in <module>
c.eat()
TypeError: eat() missing 1 required positional argument: 'self'
出现错误,正确的方法为:先导入types模块,并调用方法MethodType(function, instance)向实例对象中添加方法,function为要向对象中添加的方法,instance为接受方法的对象:
import types
#定义一个类
class Cat(object):
pass
#实例话一个Cat对象
c = Cat()
#向类中动态属性
c.color = "white"
print(c.color)
def eat(self):
print("猫在吃东西。。")
# c.eat = eat
#向类中动态添加方法
c.eat = types.MethodType(eat, c)
c.eat()
运行结果为:
white
猫在吃东西。。