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