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