【问题标题】:Passing a variable between two methods in Python?在 Python 中的两个方法之间传递变量?
【发布时间】:2017-08-17 01:36:48
【问题描述】:

(我正在尝试自学 Python,我的母语不是英语。)

我需要一个建议。将 OOP 中的变量从一种方法传递到另一种方法的常用方法是什么?将变量作为实例的属性、创建辅助“get”函数还是其他更好的方法?

1.

class A(object):
    ...

    def a(self):
        self.first = 32
        second = input("Second:")
        return self.first + second

    def b(self):
        return self.first + 1

..或

class A(object):
    ...

    def get_first(self):
        first = 32
        return first

    def a(self):
        first = get_first()
        second = input("Second:")
        return first + second

    def b(self):
        return get_first() + 1

或者有其他常用的方法吗?

【问题讨论】:

  • 不清楚你想要达到的目标。
  • 我正在尝试在其他方法中使用一种方法中的变量(以一种方法创建)。
  • 请更具体。常见的解决方案应该是方法 B 的附加参数。
  • 这取决于类和它的用法。如果将值存储为对象的一部分有意义,那么您应该这样做。如果它只是一次需要的中间结果,则不要将其保存在对象中并将其作为参数传递。

标签: python class methods attributes


【解决方案1】:

我通常使用 (1),但如果您在 a 之前调用 b,请确保 self.first 已正确定义。

如果使用 (2),请尽量使 get_first 尽可能高效,以避免计算两次相同的事情。

【讨论】:

  • 是的,如果 get_first() 有问题,假设需要输入。我不想两次接受输入。
【解决方案2】:

这取决于。使用 getter 方法的优点是,如果字段更改,您不必更改使用它的函数。但是,在 Python 中,由于属性的原因,没有必要这样做。您可以首先将self.first 存储为实例的变量。如果它发生变化,您可以添加一个名为first@property。然后,所有引用self.first 的函数都将通过这个getter 方法来获取它。因此,特别是对于 python,请使用第一个选项。

【讨论】:

    猜你喜欢
    • 2012-03-20
    • 2017-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-30
    相关资源
    最近更新 更多