2017-05-09 68 views

回答

4

所描述的需求是对复制属性的定义谓词。这可以通过在键盘上的过滤,假设你要忽略__*属性:

class MyClass(object): 
    def __init__(self): 
     super(MyClass, self).__init__() 
     self.foo = 1 
     self.__bar = 2 

def key_predicate(key): 
    return not key.startswith('_') 

obj = MyClass() 
d = {k: v for k, v in obj.__dict__.items() if key_predicate(k)} 

这将导致:

{'foo': 1} 

这可以在一个新的实例应用:

class MyOtherClass(object): 
    pass 

other_obj = MyOtherClass() 
other_obj.__dict__.update(d) 
assert other_obj.foo == 1 
+0

有用。非常感谢! – natsuapo

相关问题