在Python中的两个方法之间传递变量?

时间:2017-03-24 07:43:59

标签: python class methods attributes

(我正在尝试自己学习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

还是有其他常用的方法吗?

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:-1)

我只需要在 init ()方法中定义两个实例变量,a()和b()都可以访问这些变量,因为这些变量在某种意义上不是私有的可以直接从您不需要吸气剂或定位器的物体进入,但更多的是个人偏好。

如果您想表明该变量应该是私有的前缀,请使用单个_

def __init__():
    self._a = 32