나는 당신이 이것을하도록 요구하는 프로그램 설계에 무언가 잘못된 것이 있다는 강한 의혹을 가지고 있습니다. 파이썬에서는 자바와는 달리 클래스가 해결해야 할 문제가 거의 없다. 당신이 필요로하는 기능이 있다면, 간단하게 정의
:
def function_i_need(a):
"""parameter a: an instance of A"""
pass # do something with 'a'
을하지만, 나는 당신의 기능 클래스의 방법을 만들기에서 당신을 단념 할 수없는 경우, 당신은 __class__
속성을 설정하여 인스턴스의 클래스를 변경할 수 있습니다
>>> class A(object):
... def __init__(self):
... pass
...
>>> class B(A):
... def functionIneed(self):
... print 'functionIneed'
...
>>> a = A()
>>> a.functionIneed()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'A' object has no attribute 'functionIneed'
>>> a.__class__ = B
>>> a.functionIneed()
functionIneed
__init__
이 절대 호출되지 않으므로 B는 __init__
메서드가없는 한 작동합니다.
class B(A):
def functionIneed():
pass
그러나 (당신이 처음에 class 또는 static 방법을 만드는 의도는 제외) 정말 당신이 만드는 것입니다 것은 더이 같은 것입니다 :
이것은 내 것보다 나은 대답입니다. –