# mapattrs-slots.py: test __slots__ attribute inheritance from mapattrs import mapattrs, trace class A(object): __slots__ = ['a', 'b'] x = 1 y = 2 class B(A): __slots__ = ['b', 'c'] class C(A): x = 2 class D(B, C): z = 3 def __init__(self): self.name = 'Bob' I = D() trace(mapattrs(I, bysource=True)) # Also: trace(mapattrs(I))
# -*- coding: utf-8 -*- # mapattrs-slots.py 파일: __slots__ 속성 상속을 테스트 from mapattrs import mapattrs, trace class A(object): __slots__ = ['a', 'b'] x = 1 y = 2 class B(A): __slots__ = ['b', 'c'] class C(A): x = 2 class D(B, C): z = 3 def __init__(self): self.name = 'Bob' I = D() trace(mapattrs(I, bysource=True)) # trace(mapattrs(I)와 동일함
# mapattr-slots.py test __slot__ attribute inheritance from mapattrs import mapattrs, trace class A(object): __slots__ = ['a', 'b'] x = 1 y = 2 class B(A): __slots__ = ['b', 'c'] class C(A): x = 2 class D(B, C): z = 3 def __init__(self): self.name = 'Bob' I = D() trace(mapattrs(I, bysource=True))
# mapattrs-slots.py: test __slots__ attribute inheritance from mapattrs import mapattrs, trace class A(object): __slots__ = ['a', 'b']; x = 1; y = 2 class B(A): __slots__ = ['b', 'c'] class C(A): x = 2 class D(B, C): z = 3 def __init__(self): self.name = 'Bob'; I = D() trace(mapattrs(I, bysource=True)) # Also: trace(mapattrs(I))
class A: attr1 = 1 class B(A): attr2 = 2 class C(A): attr1 = 3 class D(B, C): pass I = D() print('Py=>%s' % I.attr1) # 피이썬의 검색 == 우리가 구현한 검색? trace(inheritance(I), 'INH\n') # [상속 순서] trace(mapattrs(I), 'ATTRS\n') # 속성 => 상속 원천 trace(mapattrs(I, bysource=True), 'OBJS\n') # 원천 => [속성] print('New-style classes in 2.X and 3.X') class A(object): attr1 = 1 # '(object)' 표기는 3.X에서는 선택 사항임 class B(A): attr2 = 2 class C(A): attr1 = 3 class D(B, C):