다음의 파이썬 코드에서 Bus 클래스가 Base를 상속을 받을 수 있는가. 다시 말해 어떻게 변수를, 또는 인스턴스를 class가 상속을 받을 수 있는가? 라는 질문을 받았다.
Base = declarative_base()
class Bus(Base):
__tablename__ = 'bus'
....
듣고 나도 혹해서 어떻게 이게 가능하지? 이러고서 모듈을 들여다봐도 이해가 안되게 너무 커서 이해가 전혀 되질 않았다. 잠도 안오고 그래서 메일링 리스트에 올리니 바로 답변이 왔다.
>>> def make_human():
... class Human(object):
... def say(self):
... print "I'm a human"
... return Human
...
>>> dude = make_human()
>>> edward = dude()
>>> edward.say()
I'm a human
>>>
파이썬에선 클래스도 반환이 가능하다.