可以将python中的Attribute引用与Java中的静态类进行比较吗?

时间:2017-05-15 10:39:02

标签: java python oop

我假设Attribute引用类似于Java中的静态类。

例如:我已经宣布了一个类

>>> class Square:
        def __init__(self):
                self.side=0
        def area(self):
                print(self.side*self.side)

然后这行正常工作:

>>> Square.side=2

但是在访问'区域时会收到错误消息。方法

>>> Square.area()

有人可以解释python中的实际属性引用是如何工作的吗? 并澄清我的假设是否正确?

2 个答案:

答案 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

有关类,实例方法,类方法的更多信息,请参阅

https://docs.python.org/3/tutorial/classes.html