오브젝트 k
이 class A
인 것으로 가정하십시오. 우리는 두 번째로 class B(A)
을 정의했습니다. 개체 k
을 class B
으로 "변환"하고 모든 데이터를 k
에 보존하는 가장 좋은 방법은 무엇입니까?파이썬 오브젝트 변환
26
A
답변
17
이것은 "클래스 변환"을 수행하지만 담보의 충격에 의해 손상 될 수 있습니다. 다른 객체를 만들고 BrainCore가 게시 된대로 __dict__
을 게시하면 더 안전합니다.하지만이 코드는 새 객체를 만들지 않고 요청한대로 수행합니다.
class A(object):
pass
class B(A):
def __add__(self, other):
return self.value + other
a = A()
a.value = 5
a.__class__ = B
print a + 10
7
a = A() # parent class
b = B() # subclass
b.value = 3 # random setting of values
a.__dict__ = b.__dict__ # give object a b's values
# now proceed to use object a
사용 사례를 충족합니까? 참고 : b의 인스턴스 변수 만 클래스 A의 클래스 변수가 아니라 객체 a에서 액세스 할 수 있습니다. 당신이 deepcopy을하지 않는 한 또한,에서 수정 변수, B의 변수를 수정합니다 :
import copy
a.__dict__ = copy.deepcopy(b.__dict__)
관련 문제
- 1. 파이썬 오브젝트 인스펙터 GUI
- 2. 오브젝트의 변화를 모니터하는 파이썬 오브젝트
- 3. 변환 파이썬
- 4. 오브젝트 풀 디자인 패턴의 파이썬 구현
- 5. 파이썬 목록 조회 오브젝트 이름, 효율성 조언
- 6. 플렉스, 3d 오브젝트 변환 및 회전
- 7. 리모트 오브젝트 결과를 flex로 배열 콜렉션으로 변환
- 8. 파이썬 코드를 PHP로 변환
- 9. 파이썬 변환 STR은
- 10. 파이썬 문자열을 연산자로 변환
- 11. 파이썬 인코딩 변환
- 12. 파이썬 변환 날짜와 시간
- 13. 파이썬 소스 코드를 변환
- 14. 오브젝트 내부의 오브젝트
- 15. 오브젝트
- 16. 스프레드 시트를 파이썬 사전 변환
- 17. 부스트 :: 파이썬 문자열 변환 특성
- 18. 파이썬 문자열 변환 (현지화) 질문
- 19. GTK 파이썬 스크립트를 C로 변환
- 20. 파이썬 : 목록을 정상 값으로 변환
- 21. 파이썬 리플렉션 및 타입 변환
- 22. ISO-8859-5로 파이썬 변환
- 23. 오브젝트 배열을 통한 오브젝트 액세스
- 24. JSON-ception - 오브젝트 내부의 오브젝트
- 25. 오브젝트 대 오브젝트 맵핑 유틸리티
- 26. 오브젝트 데이터를 오브젝트 데이터와 분리
- 27. 오브젝트 또는 오브젝트 속성 전달
- 28. 형식 선언의 암시 적 변환? 힙에 저장되는 오브젝트 유형은 무엇입니까?
- 29. Java의 다중 스레드 오브젝트 → 오브젝트 캐시 맵?
- 30. 오브젝트 참조와 오브젝트 해시 코드의 차이점
어떤 방식으로 변환 하시겠습니까? 클래스 B 객체의 모든 멤버 변수를 유지하고 싶지만 부모 클래스 A의 메소드 세트를 사용 하시겠습니까? – BrainCore
이것은 매우 불쌍한 다형성입니까? 공통 수퍼 클래스의 A 및 B 서브 클래스입니까? 그렇다면 이것은 잘못된 행동입니다. A가 B와 같은 방법을 원했습니까? 이는 다중 상속을 통해 수행됩니다. 파이썬에서 캐스팅이나 타입 변환이 필요하다고 생각한다면 틀린 생각을하기 때문에 이것을 왜 필요하다고 생각하는지 설명해주십시오. –
유스 케이스에 대해서도 궁금합니다. 고전적인 다형성 (polymorphism)의 도움을받는 것 외에 다른 문제를 해결하는 더 좋은 방법이라고 생각하십니까? –