引用类属性的约定?

时间:2018-03-18 02:46:49

标签: python python-3.x attributes conventions class-variables

引用类属性的约定是什么?我知道有两种方法可以引用类属性:

class Circle1:
    pi = 3.14

    def __init__(self, radius=1):
        self.radius = radius

    def get_circumference():
        return 2 * self.pi * self.radius

class Circle2:
    pi = 3.14

    def __init__(self, radius=2):
        self.radius = radius

    def get_circumference():
        return 2 * Circle2.pi * self.radius

第一种方式是将其引用为self.attribute,而第二种方式是将其引用为Class.attribute。引用类属性的约定是哪种方式?或者没有惯例,这只是一个偏好的问题吗?

1 个答案:

答案 0 :(得分:0)

这实际上取决于你将如何使用它。 Class.attribute会将其设置为该类的所有实例的属性,而self.attribute仅适用于特定实例。在您的情况下,pi 始终(大约)3.14,因此它应该是一个类属性,而半径特定于任何一个圆,因此它应设置为{{1 }}。

另外,为了帮助缩短你的代码,你应该只使用1类圆圈,并使半径成为强制性的(不要指定默认值),因为这是唯一可以改变的东西。

相关问题