【发布时间】:2016-09-08 20:08:46
【问题描述】:
在python中,为什么做这样的事情是一件坏事:
class Circle:
pi = 3.14159 # class variable
def __init__(self, r = 1):
self.radius = r
def area(self):
return Circle.pi * squared(self.radius)
def squared(base): return pow(base, 2)
面积法可以定义如下:
def area(self): return self.__class__.pi * squared(self.radius)
这被认为是引用类变量的更好方法,除非我非常错误。问题是为什么?直觉上,我不喜欢它,但我似乎并没有完全理解这一点。
【问题讨论】:
-
区域def area(self)中没有self:
-
你误会了什么,你应该使用
Cirlce.pi,而不是self.__class__.pi或type(self).pi。 -
@Versatile 好像我打错了,一定有 self 在区域内。
-
@BiRico 为什么我不应该使用 self.__class__.pi?