有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我假设属性引用类似于Java中的静态类

例如:我已经声明了一个类

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

那么这句话就行了:

>>> Square.side=2

但是在访问“区域”方法时获取错误

>>> Square.area()

有人能解释一下python中的属性引用是如何工作的吗? 澄清我的假设是否正确


共 (2) 个答案

  1. # 1 楼答案

    要访问area方法,需要按实例方法创建方形对象

    square_object=Square()
    square_object.side=2
    square_object.area() 
    #prints 4
    

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

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

  2. # 2 楼答案

    可以在python中使用静态方法,但不能这样。还要考虑语义,而不仅仅是粗略的语法

    Square是对每一个可能的正方形的描述。说square.size = 3有意义吗?可能不会,因为我们将主体限制在3个单位大小的正方形,而不是每个正方形

    这同样适用于area。你不想要“正方形”的面积。您需要一个特定正方形的面积,或者如python中所称的instance。因此,通过将Square的一个实例分配给一个变量,并使用该变量计算面积,您的程序将获得更多:

    >>> s = Square()
    
    >>> s.side = 1
    >>> s.area()
    1
    >>> s.side = 3
    >>> s.area()
    9