【问题标题】:reusing a variable defined in a python class重用在 python 类中定义的变量
【发布时间】:2020-04-17 05:55:17
【问题描述】:

假设我定义了一个类。我有一个有趣的方法,我创建 self.x。我想以不同的方法(重用)使用 self.x。我怎么能那样做?因为我尝试了我写的东西并且没有工作。谢谢!

class test:
    def __init__(self,t):
       self.t = t
    def fun(self):
       self.x = self.t+1
    def reuse(self):
       self.y = self.x 

【问题讨论】:

  • 除非self.fun()被执行过,否则self.x没有被定义,所以你需要确保self.fun()在调用self.reuse()之前至少被调用过一次
  • 所以它必须是这样的:self.y = self.fun()?
  • self.fun() 不返回任何内容。所以你只需要在self.y = self.x之前添加self.fun()
  • @rdas 如果他在self.y = self.x前加上self.fun(),每次调用self.reuse()都会调用self.fun(),可以修改内容。

标签: python class variables methods


【解决方案1】:

您需要在__init__ 方法中创建所有变量。 试试这个:

class test:
    def __init__(self,t):
       self.t = t
       self.x = 0
       self.y = 0
    def fun(self):
       self.x = self.t+1
    def reuse(self):
       self.y = self.x 

【讨论】:

  • 谢谢,但这不是我想要的。我做了一个简单的例子,但是在 fun() 中,我计算了很多东西,我想重用而不是再次计算。让我再问一个问题。有趣的是,让赋值 self.x = self.t+1 和 x = self.t+1 有什么区别。我想我知道,但我希望得到更有知识的人的确认。
  • x = self.t+1 在您的方法中创建一个局部变量 x,该变量在方法退出时被丢弃。 self.x = self.t+1 更新实例的 x 属性的值。但是根据最后一个问题,您似乎过度简化了问题中的示例,并且它并没有真正问您想要什么......
  • 当您使用self.x = self.t+1 时,它将更新类变量的值。当您使用x = self.t+1 时,它将为该函数创建一个局部变量,您无法在外部访问该变量。
  • 等一下。我认为你的回答是正确的。如果我按照你的方式写课程。是 self.y = self.x = self.t+1 吗?换句话说,self.y = self.t+1?还是 self.y = 0?我想我可以运行它看看会发生什么。
  • 当您在__init__ 中提及self.x = 0 时,它只会在创建实例时执行一次。当您调用其他函数时,它将返回使用之前计算的值。
猜你喜欢
  • 2018-04-23
  • 2020-09-18
  • 2012-02-21
  • 1970-01-01
  • 2016-11-10
  • 2018-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多