2017-05-09 37 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

相關問題