在python中,如何从类中的方法调用类来重新定义变量?
我在重新定义一个对象时遇到了一些问题,该对象是我在定义该对象的同一类中使用方法创建的。我已经编写了一个小型python示例。在这里,我尝试使用类dog中的一个方法创建一个名为dog3的对象,该方法调用自身以更改其dog3.getDogName。当我打印dog3名称时,对init的调用没有生效。有人知道如何执行此操作吗 我希望得到一个输出 胡闹 最大值 忍受 但我不再是熊,而是再次感到头晕目眩在python中,如何从类中的方法调用类来重新定义变量?,python,python-3.x,Python,Python 3.x,我在重新定义一个对象时遇到了一些问题,该对象是我在定义该对象的同一类中使用方法创建的。我已经编写了一个小型python示例。在这里,我尝试使用类dog中的一个方法创建一个名为dog3的对象,该方法调用自身以更改其dog3.getDogName。当我打印dog3名称时,对init的调用没有生效。有人知道如何执行此操作吗 我希望得到一个输出 胡闹 最大值 忍受 但我不再是熊,而是再次感到头晕目眩 import sys class Dog(): def __init__(self, nam
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
正在创建新狗,而不是修改旧狗
如果希望newDog
返回一条新狗,请执行以下操作:
dog3 = dog1.newDog("bear")
或者你真的应该这么做
dog3 = Dog("bear")
如果希望newDog
修改当前Dog
实例,请执行以下操作:
def renameDog(self, new_name):
self.name = new_name
class Dog():
def change_name(self, new_name):
self.name = new_name
class Dog(object):
@staticmethod
def new_dog(new_name):
return Dog(new_name)
除非要克隆某些参数,否则不要创建实例构造函数。这可能会让人困惑。newDog
正在创建一条新狗,而不是修改旧狗
如果希望newDog
返回一条新狗,请执行以下操作:
dog3 = dog1.newDog("bear")
或者你真的应该这么做
dog3 = Dog("bear")
如果希望newDog
修改当前Dog
实例,请执行以下操作:
def renameDog(self, new_name):
self.name = new_name
class Dog():
def change_name(self, new_name):
self.name = new_name
class Dog(object):
@staticmethod
def new_dog(new_name):
return Dog(new_name)
除非要克隆某些参数,否则不要创建实例构造函数。它可能会令人困惑。您的代码已经定义了方法
newDog
,以返回Dog
的新实例
您的代码还为dog3
分配了Dog
的实例,但是当您的代码调用dog3.newDog(…)
时,返回值不会分配给任何对象。因此,新创建的Dog
实例毫无用处
你可能想考虑这样做。
dog3 = dog1.newDog('bear')
print(dog3.getDogName())
您的代码已定义方法
newDog
,以返回Dog
的新实例
您的代码还为dog3
分配了Dog
的实例,但是当您的代码调用dog3.newDog(…)
时,返回值不会分配给任何对象。因此,新创建的Dog
实例毫无用处
你可能想考虑这样做。
dog3 = dog1.newDog('bear')
print(dog3.getDogName())
方法NewDog“返回”一个新的Dog实例,但它不会更改它是什么,因此如果您想更改当前Dog实例的名称,请执行以下操作:
def renameDog(self, new_name):
self.name = new_name
class Dog():
def change_name(self, new_name):
self.name = new_name
class Dog(object):
@staticmethod
def new_dog(new_name):
return Dog(new_name)
如果您想获得另一个Dog实例,请执行以下操作:
def renameDog(self, new_name):
self.name = new_name
class Dog():
def change_name(self, new_name):
self.name = new_name
class Dog(object):
@staticmethod
def new_dog(new_name):
return Dog(new_name)
方法NewDog“返回”一个新的Dog实例,但它不会更改它是什么,因此如果您想更改当前Dog实例的名称,请执行以下操作:
def renameDog(self, new_name):
self.name = new_name
class Dog():
def change_name(self, new_name):
self.name = new_name
class Dog(object):
@staticmethod
def new_dog(new_name):
return Dog(new_name)
如果您想获得另一个Dog实例,请执行以下操作:
def renameDog(self, new_name):
self.name = new_name
class Dog():
def change_name(self, new_name):
self.name = new_name
class Dog(object):
@staticmethod
def new_dog(new_name):
return Dog(new_name)
不要随意使用标签,pyqt5标签不是必需的。谢谢大家的回复。我认为你的回答成功了!我现在可以看出,我的错误是在变量赋值上,而不是我编写Dog类的方式。不要随意使用标记,pyqt5标记不是必需的。谢谢大家的回答。我认为你的回答成功了!我现在可以看出,我的错误是在分配变量上,而不是我编写Dog类的方式。