0
我可以根據this question將對象的屬性複製到另一個對象。但在某些情況下,我只是想複製公有屬性並忽略私有屬性或過濾掉某些特定的類,我應該怎麼做才能實現它?如何將對象的所有公共屬性複製到Python中的另一個對象?
我可以根據this question將對象的屬性複製到另一個對象。但在某些情況下,我只是想複製公有屬性並忽略私有屬性或過濾掉某些特定的類,我應該怎麼做才能實現它?如何將對象的所有公共屬性複製到Python中的另一個對象?
所描述的需求是對複製屬性的定義謂詞。這可以通過在鍵盤上的過濾,假設你要忽略__*
屬性:
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
有用。非常感謝! – natsuapo