[英]how to call a the class from a method within the class in python to redefine a variable?
我在使用定義此類對象的同一類中的方法重新定義我創建的對象時遇到了一些問題。 我寫了一個小的python示例。 在這里,我試圖使用dog類中的一種方法來創建一個名為dog3的對象,該對象會自行調用以更改其dog3.getDogName。 當我打印dog3名稱時,對init的調用未生效。 有誰知道如何執行此操作?
我希望得到一個輸出
woofy最大熊
但是我不再忍受熊了。
import sys
class Dog():
def __init__(self, name = 'woofy'):
self.name = name
def getDogName(self):
return self.name
def newDog(self, new_name):
return Dog(new_name)
class Animals():
def __init__(self, *args):
dog1 = Dog()
print(dog1.getDogName())
dog2 = Dog('max')
print(dog2.getDogName())
dog3 = dog1
dog3.newDog('bear')
print(dog3.getDogName())
def mainApp(args):
global app
app = Animals(args)
if __name__ == "__main__":
mainApp(sys.argv)
我確信經驗豐富的python程序員會知道如何執行這樣的操作。
提前謝謝你的幫助。
您的代碼已定義方法newDog
以返回Dog
的新實例。
您的代碼還為dog3
分配了Dog
的實例,但是當您的代碼稱為dog3.newDog(...)
,返回值未分配給任何東西。 因此創建的新Dog
實例無處可去。
您可能要考慮這樣做。
dog3 = dog1.newDog('bear')
print(dog3.getDogName())
newDog
正在創建一只新狗,而不修改舊狗 如果要newDog
退還一條新狗,請執行以下操作:
dog3 = dog1.newDog("bear")
還是真的你應該在做
dog3 = Dog("bear")
如果要newDog
修改當前的Dog
實例,請執行以下操作:
def renameDog(self, new_name):
self.name = new_name
除非要克隆某些參數,否則不要創建實例構造函數。 可能會造成混亂。
NewDog方法“返回”一個新的Dog實例,但是它不會改變它的名稱,因此,如果您想更改當前Dog實例的名稱,請執行以下操作:
class Dog():
def change_name(self, new_name):
self.name = new_name
如果您想獲取另一個Dog實例,請執行以下操作:
class Dog(object):
@staticmethod
def new_dog(new_name):
return Dog(new_name)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.