我假设Attribute引用类似于Java中的静态类。
例如:我已经宣布了一个类
>>> class Square:
def __init__(self):
self.side=0
def area(self):
print(self.side*self.side)
然后这行正常工作:
>>> Square.side=2
但是在访问'区域时会收到错误消息。方法
>>> Square.area()
有人可以解释python中的实际属性引用是如何工作的吗? 并澄清我的假设是否正确?
答案 0 :(得分:2)
你可以在python中使用静态mehtods,但不是那样。还要考虑语义,而不仅仅是粗略的语法。
Square
是每个可能方格的描述符。说square.size = 3
是否合理?可能不是,因为那时我们将主题限制为3个单位大小的正方形,而不是每个正方形。
同样适用于area
。你不想要“正方形”的区域。你想要特定方形的区域 - 或者在python中调用instance
。因此,通过为变量分配Square
的实例,并使用该变量计算区域,您的程序将会做更多的事情:
>>> s = Square()
>>> s.side = 1
>>> s.area()
1
>>> s.side = 3
>>> s.area()
9
答案 1 :(得分:0)
要访问区域方法,您需要创建Square对象,因为它是实例方法。
square_object=Square()
square_object.side=2
square_object.area()
#prints 4
有关类,实例方法,类方法的更多信息,请参阅