我在重新定义一个对象时遇到了一些问题,这个对象是我在定义此类对象的同一类中使用方法创建的。我已经编写了一个小的python示例。在这里,我试图创建一个名为dog3的对象,使用dog类中的一个方法调用它自己来更改dog3.getDogName。当我打印dog3名称时,对init的调用没有生效。有人知道怎么做这个手术吗
我希望得到一个输出作为
胡飞 最大值 熊
但我不再是熊了,我又发晕了
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实例,但它不会更改它是什么,因此如果要更改当前Dog实例的名称,请执行以下操作:
如果要获取另一个Dog实例,请执行以下操作:
您的代码定义了方法
newDog
,以返回Dog
的新实例您的代码还为
dog3
分配了一个Dog
的实例,但是当您的代码调用dog3.newDog(...)
时,返回值不会分配给任何对象。因此,新创建的Dog
实例毫无用处你也许应该考虑这样做
newDog
正在创建一个新狗,而不是修改旧狗如果您想
newDog
归还一只新狗,请执行以下操作:或者你真的应该
如果希望
newDog
修改当前Dog
实例,请执行以下操作:除非要克隆某些参数,否则不要生成实例构造函数。这会让人困惑
相关问题 更多 >
编程相关推荐