개체를 인스턴스화 할 때 개체가 파생되는 클래스를 전달할 수 있습니까? 예를 들어개체의 수퍼 클래스를 __init__에 설정 하시겠습니까?
: Circle
의 다른 인스턴스에 영향을 미치는 그러나없이
class Circle(Red):
def __init__(self):
self.x()
:
class Red(object):
def x(self):
print '#F00'
class Blue(object):
def x(self):
print '#00F'
class Circle(object):
def __init__(self, parent):
# here, we set Bar's parent to `parent`
self.x()
class Square(object):
def __init__(self, parent):
# here, we set Bar's parent to `parent`
self.x()
self.sides = 4
red_circle = Circle(parent=Red)
blue_circle = Circle(parent=Blue)
blue_square = Square(parent=Blue)
은 유사한 효과를 가질 것이다. 당신이 정말로 그것을 필요하면
#!/usr/bin/env python
class Foo(object):
def x(self):
print('y')
def Bar(parent=Foo):
class Adoptee(parent):
def __init__(self):
self.x()
return Adoptee()
obj=Bar(parent=Foo)
이 방법으로 구성 하시겠습니까? 원과 스퀘어에는 '색상'속성이 있어야합니다. 최소한 일반 영어의 경우, 빨강과 파랑은 서클과 사각형의 부모가 아닙니다. – unutbu
나는 당신이 근본적인 방법으로 "OO 디자인"을 남용하고 있다고 생각합니다. –
@ S.Lott - 나는 지나치게 영리 해 지려고 노력했다. 의존성 주입은 내 작업에 충분할 것입니다. –