가능한 중복 : Is there a way to create subclasses on-the-fly? Dynamically creating classes - Python파이썬 동적 서브 클래스
나는 유일한 차이점은 일부 클래스 변수하는 서브 클래스를 생성하고 싶습니다,하지만 난 동일하게 유지하기 위해 다른 모든 것을하고 싶습니다. 내가 런타임에만 클래스 변수 값을 알고 있기 때문에이 작업을 동적으로 수행해야합니다.
여기까지는 몇 가지 예제 코드가 있습니다. FooBase.foo_var를 "기본값"으로 설정하고 FooBar.foo_var를 "바"로 설정합니다. 지금까지 성공한 시도는 없습니다.
print "my foovar is '" + FooBase.foo_var + "'"
허용 대답이있다 self.foo_var
코드에서 :
class FooBase(object):
foo_var = "default"
def __init__(self, name="anon"):
self.name = name
def speak(self):
print self.name, "reporting for duty"
print "my foovar is '" + FooBase.foo_var + "'"
if __name__ == "__main__":
#FooBase.foo_var = "foo"
f = FooBase()
f.speak()
foobarname = "bar"
#FooBar = type("FooBar", (FooBase,), {'foo_var': "bar"})
class FooBar(FooBase): pass
FooBar.foo_var = "bar"
fb = FooBar()
fb.speak()
많은 감사
편집 그래서 난 분명이 라인에 문제가 있습니다. 그게 내가해야 할 일이다. 나는 지금 우스꽝 스럽다. 이것에 대해
감사합니다. 'self.foo_var'가 누락되었습니다. 인스턴스 변수 대신 클래스 변수를 선호하는 이유는 인스턴스 수가 많지만 아마 1-3 하위 클래스가 있기 때문입니다. – liang
그 동기에만 근거하여 foo_var을 인스턴스 변수로 만들어야한다고 생각합니다. 당신의 인스턴스를 생성하는 것은 인스턴스 변수없이 우리의 인스턴스만큼 빠릅니다. 당신도 필요없이 무언가를 최적화하려고하는 것 같습니다. –
예, 당신 말이 맞아요. 가능한 한 많이 최적화해야한다는 압박감이 있습니다. 나는 클래스 변수와 함께/시도하지 않고 어떤 차이가 있는지 알아볼 것이다 (아마 그렇지 않을 것이다) – liang