python中的属性引用可以与Java中的静态类进行比较吗?
我假设属性引用类似于Java中的静态类 例如:我声明了一个类python中的属性引用可以与Java中的静态类进行比较吗?,java,python,oop,Java,Python,Oop,我假设属性引用类似于Java中的静态类 例如:我声明了一个类 >>> class Square: def __init__(self): self.side=0 def area(self): print(self.side*self.side) 那么这一行就行了: >>> Square.side=2 但是在访问“区域”方法时获取错误 >>>
>>> class Square:
def __init__(self):
self.side=0
def area(self):
print(self.side*self.side)
那么这一行就行了:
>>> Square.side=2
但是在访问“区域”方法时获取错误
>>> Square.area()
有人能解释一下python中的属性引用是如何工作的吗?
并澄清我的假设是否正确 要访问area方法,您需要创建正方形对象,因为它是实例方法
square_object=Square()
square_object.side=2
square_object.area()
#prints 4
有关类、实例方法、类方法的更多信息,请参阅
您可以在python中使用静态方法,但不是那样。还要考虑语义,而不仅仅是粗略的语法
Square
是对每个可能的Square的描述。说square.size=3
有意义吗?可能不会,因为我们将主体限制在3个单位大小的正方形,而不是每个正方形
这同样适用于区域
。您不想要“正方形”的面积。您需要一个特定正方形的面积,或者如python中所称的实例
。因此,通过将正方形的一个实例分配给一个变量,并使用该变量计算面积,您的程序将获得更多:
>>> s = Square()
>>> s.side = 1
>>> s.area()
1
>>> s.side = 3
>>> s.area()
9
在第一种情况下,您将在类(而不是实例)上设置一个新属性。分配给类属性就像在Java中创建一个静态变量。Python中确实没有“静态类”,也没有真正的需要。静态类实际上只有在Java这样的语言中才有意义,它迫使您为所有内容编写类定义。在Python中,您只需要使用一个带有函数的模块。所以,java中的属性引用与静态类不同??