2012-01-17 71 views
1

我有以下類,我想在該類中使用__init__中的方法location_change。有沒有辦法做到這一點?我在下面使用的例子是一個簡化,但我需要做的是使用類方法來轉換一些構造函數數據。這可以在python中完成嗎?在__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 2012-01-17 14:17:46

+2

classes_上的_classmethods_和_methods之間似乎存在一些混淆;可悲的是,這些不同。 – katrielalex 2012-01-17 14:26:09

回答

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

你爲什麼要調用'dummy.location_change(self)'而不是'self.location_change()'?這樣,如果一個子類實現'location_change',實現將不會被使用! – 2012-01-17 14:25:10

相關問題