인터페이스를 나타내는 추상 기본 클래스가 있습니다. 이 클래스의 서브 클래스는,이 클래스의 그 외의 서브 클래스의 프롭퍼티로서 포함됩니다. 예를 들어중첩 된 클래스 인스턴스에 유용한 기본 __repr__
:
class AbstractBase(object):
pass
class Child(AbstractBase):
def __init__(self, cls1, cls2):
assert isinstance(cls1, AbstractBase)
assert isinstance(cls2, AbstractBase) # just to show they're instances
self.cls1 = cls1
self.cls2 = cls2
계층의 깊이와 레이아웃을 미리 알 수 없지만, 재귀 없습니다.
을 AbstractBase
에 입력하면 유용한 방법으로 각 하위 클래스의 소유권을 볼 수 있습니다.
내 현재의 접근 방식은 다음과 같습니다
MyClass
{'var1': 1,
'var2': 2}
그러나, 클래스 AbstractBase
과 : AbstractBase
의 서브 클래스 프로퍼티가
from pprint import pformat
class AbstractBase(object):
def __repr__(self):
return self.__class__.__name__ + '\n' \
+ pformat({k:v for k,v in self.__dict__.iteritems()
if not '__' in k})
는 (이 읽을 것을, 예를 출력 하위 클래스는 부모 클래스가 시작하고 다른 클래스가 시작되는 곳을 말하기 어렵 기 때문에 (중첩의 추가 수준은 위의 __repr__
에 들여 쓰기가 추가되지 않음)
내가 cls1
과 cls2
이 단일의 int 속성 var
했다 상상, 아래와 같은 뭔가 드리겠습니다 : 슬프게도
Child
{'cls1': {
'var': 1,
},
'cls2': {
'var': 0,
}
}
을, 나는 이것을 달성하는 방법을 알고 (또는 심지어 가능하다면)하지 않는다 . 이견있는 사람?
당신은 뭔가를 원하는'데프 __repr __ (자기, 들여 쓰기 = 1)', 이상한 구석이있을 것 당신이 커버 할 수없는 경우 –