2012-01-17 3 views
1

다음 클래스가 있습니다.이 클래스에는 location_change 범위 내에서 __init__을 사용하고 싶습니다. 이것을 할 수있는 방법이 있습니까? 아래에서 사용하는 예제는 단순화되었지만 클래스 메서드를 사용하여 일부 생성자 데이터를 변환해야합니다. 이것을 파이썬으로 할 수 있습니까?__init__에 클래스 메소드 사용하기

class dummy: 

    def __init__(self): 

     self.location = 'USA' 
     print(self.location) 

     location_change() 
     print(self.location) 

    def location_change(): 

     self.location = 'UK' 


first_dummy = dummy() 
+3

CamelCase의 클래스 이름을 지정하는 것이 좋습니다. – demalexx

+2

_classmethods_와 _methods 사이에는 classes_에 약간의 혼란이있는 것 같습니다. 슬프게도, 이것들은 다르다. – katrielalex

답변

3

가 할 수있는이

class Dummy: 

    def __init__(self): 

     self.location = 'USA' 
     print(self.location) 

     self.location_change() 
     print(self.location) 

    def location_change(self): 

     self.location = 'UK' 


first_dummy = Dummy() 
1
class Dummy: 

    def __init__(self): 

     self.location = 'USA' 
     print(self.location) 
     Dummy.location_change(self) 
     print(self.location) 

    def location_change(self): 

     self.location = 'UK' 


first_dummy = Dummy() 
print(first_dummy) 

에서 OOP에 입문 튜토리얼은 인수, 자기와 함께 일하는 것을 "location_change"을 이야기했다. 그렇지 않으면 정의되지 않은 변수입니다. 또한 클래스를 호출 할 때 클래스 이름을 사용해야했습니다. 그러면 다음과 같이 표시됩니다.

USA 
UK 
<__main__.Dummy object at 0x1005ae1d0> 
+3

왜 self.location_change() 대신 dummy.location_change (self)를 호출하겠습니까? 하위 클래스가'location_change'를 구현하면 구현이 사용되지 않을 것입니다. –