【问题标题】:Make return of a method/instance become an attribute使方法/实例的返回成为属性
【发布时间】:2016-11-23 05:06:40
【问题描述】:

我有一个 A() 类包含一些方法:

class A(self):
    def __init__ (self, x1, x2):
        self.x1 = x1
        self.x2 = x2
    def plus(self):
        X3 = self.x1 + self.x2
        return X3

如何使 X3 成为我可以通过“self.X3”访问的属性以将其用于其他方法 我是新手,先谢谢了!

【问题讨论】:

    标签: python class methods attributes


    【解决方案1】:

    对于这个例子,使用property 可能是最合适的。您可以阅读有关描述符协议的更多信息(属性是语法糖)here

    class A:
        def __init__ (self, x1, x2):
            self.x1 = x1
            self.x2 = x2
        @property
        def X3(self):
            return self.x1 + self.x2
    

    【讨论】:

      【解决方案2】:
      class A:
          def __init__ (self, x1, x2):
              self.x1 = x1
              self.x2 = x2
          def plus(self):
              self.X3 = self.x1 + self.x2
              return self.X3
      
      if __name__ == '__main__':
          a = A(1, 2)
          print a.plus()
      

      试试这个。当我尝试在 A 类之后添加 (self) 时,编译时遇到了一些问题。

      【讨论】:

        【解决方案3】:

        只需将X3 = 更改为:self.X3=

        class A(self):
            def __init__ (self, x1, x2):
                self.x1 = x1
                self.x2 = x2
            def plus(self):
                self.X3 = self.x1 + self.x2
                return self.X3
        

        【讨论】:

          【解决方案4】:

          一种方法是通过添加self. 来简单地将X3 设为属性。例如:

          class A(self):
              def __init__ (self, x1, x2):
                  self.x1 = x1
                  self.x2 = x2
              def plus(self):
                  self.X3 = self.x1 + self.x2
                  return self.X3
          

          我不确定这是最好的方法,但根据您的问题很难判断。

          【讨论】:

          • +1 强调它可能不是 最佳 方法。这就像在调试从 somewhere 设置的神奇 self.X3 时浪费了十几个工时。
          • 认为属性可能是这个特定示例的最佳方式。
          • @Alex,我想你可能是对的,但是不清楚plus() 方法应该做什么,它可能会从我们未显示的代码中调用。
          猜你喜欢
          • 1970-01-01
          • 2021-09-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-05-23
          • 2016-10-09
          • 1970-01-01
          相关资源
          最近更新 更多