2013-02-25 5 views
0

내가 가진 :어떻게 초기화합니까?

Class A: 
    def __init__(self, y): 
     blah, blah, blah 
    def af(self, h): 
     print "this" 

난을 통해이 같은 인증 된 정의를 타고 :

def my_init(self,h): 
    gangsta wangsta 
def aff(self,h): 
    print "that" 

A.af = aff # works 
A.__init__ = my_init # doesn't work 

그것은 초기화 작동하지 않습니다 .... 나는 그것을/__init__ 승 어떻게해야합니까?

+2

어떤 방식으로 작동하지 않습니까? – BrenBarn

+2

gangsta wangsta는 아마도 문제 일 것입니다 ... –

+0

오류 없음, A .__ init__은 "gangsta wangsta"가 아닌 "blah, blah, blah"가됩니다. – user2108657

답변

2

가장 쉬운 방법은 서브 클래스에 있습니다 :

class B(A): 
    __init__ = my_init 
+0

op가 묻는 방법 (올바른 답은 +1 모두)은 –

+0

입니다. 이유는 무엇입니까? 귀하의 답변 대 올바른 방법입니까? – user2108657

+0

클래스의 동작을 전역 적으로 변경하는 것은 무례한 것으로 간주되기 때문입니다. 결국, 당신은 클래스 A를 사용하는 다른 모듈들에게 그들이이 변화에 대해 어떻게 생각하는지 물어 보지 않았습니다 ... – mgilson

2

정확히 문제가 무엇인지?

>>> class X: 
... def __init__(self): 
...  print "Original Init!" 
... 
>>> def new_init(self): 
... print "OK New Init" 
>>> X() 
Original Init! 
>>> X.__init__ = new_init 
>>> X() 
OK New Init 
+0

나는 이것에 관해서 논평 할 것입니다. – Bakuriu

관련 문제