如何'更新'已经声明的类?我的特殊情况是允许用户在运行时输入代码(通过模块名称),以在程序确定现有类不足时更新类。所以我要说我的模块ClassA
包含
class ClassA:
def __init__(self, field1):
self.field1 = field1
在运行时间中途我注意到某些情况我想使用ClassA
,只要我可以添加另一个字段。我提醒用户并给他们选项。我可以提示他们输入什么?他们有可能给我一个重新声明课程的文件名吗?如果没有,我怎么能这样做?如果用户这样做,那么现有的类实例会发生什么?我认为如果正确完成它们会无缝更新吗?
答案 0 :(得分:1)
您可以通过将函数指定为未绑定方法来动态添加或替换类的方法。例如:
class Foo(object):
pass
f = Foo()
def m(self, x):
self.x = x
Foo.method = m
f.method(123)
print(f.x)
这会打印123
。即使在创建method
之后才添加f
,但仍然可以从f
调用。