Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中,如何从类中的方法调用类来重新定义变量?_Python_Python 3.x - Fatal编程技术网

在python中,如何从类中的方法调用类来重新定义变量?

在python中,如何从类中的方法调用类来重新定义变量?,python,python-3.x,Python,Python 3.x,我在重新定义一个对象时遇到了一些问题,该对象是我在定义该对象的同一类中使用方法创建的。我已经编写了一个小型python示例。在这里,我尝试使用类dog中的一个方法创建一个名为dog3的对象,该方法调用自身以更改其dog3.getDogName。当我打印dog3名称时,对init的调用没有生效。有人知道如何执行此操作吗 我希望得到一个输出 胡闹 最大值 忍受 但我不再是熊,而是再次感到头晕目眩 import sys class Dog(): def __init__(self, nam

我在重新定义一个对象时遇到了一些问题,该对象是我在定义该对象的同一类中使用方法创建的。我已经编写了一个小型python示例。在这里,我尝试使用类dog中的一个方法创建一个名为dog3的对象,该方法调用自身以更改其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
正在创建新狗,而不是修改旧狗 如果希望
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类的方式。