如何将一个对象的所有公共属性复制到Python中的另一个对象?
我可以根据需要将一个对象的属性复制到另一个对象。但是在某些情况下,我只想复制公共属性而忽略私有属性或过滤掉一些特定的类,我应该怎么做才能实现它呢?所描述的需求是对复制属性的定义谓词。这可以通过过滤键来实现,假设您想省略如何将一个对象的所有公共属性复制到Python中的另一个对象?,python,Python,我可以根据需要将一个对象的属性复制到另一个对象。但是在某些情况下,我只想复制公共属性而忽略私有属性或过滤掉一些特定的类,我应该怎么做才能实现它呢?所描述的需求是对复制属性的定义谓词。这可以通过过滤键来实现,假设您想省略\uuu*属性: class MyClass(object): def __init__(self): super(MyClass, self).__init__() self.foo = 1 self.__bar = 2
\uuu*
属性:
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
所描述的需求是复制属性上定义的谓词。这可以通过过滤键来实现,假设您想省略
\uuu*
属性:
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