如何在运行时更新已声明的类

时间:2016-03-06 23:03:10

标签: python

如何'更新'已经声明的类?我的特殊情况是允许用户在运行时输入代码(通过模块名称),以在程序确定现有类不足时更新类。所以我要说我的模块ClassA包含

class ClassA:
   def __init__(self, field1):
         self.field1 = field1

在运行时间中途我注意到某些情况我想使用ClassA,只要我可以添加另一个字段。我提醒用户并给他们选项。我可以提示他们输入什么?他们有可能给我一个重新声明课程的文件名吗?如果没有,我怎么能这样做?如果用户这样做,那么现有的类实例会发生什么?我认为如果正确完成它们会无缝更新吗?

1 个答案:

答案 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调用。