为什么我的函数无需赋值规则就知道属性的值?

问题描述 投票:0回答:1

我最近开始学习Python,在这里得到了这段代码:

import math

class Circle:
    def __init__(self, radius):
        self.radius = radius

    def area(self):
        return math.pi * self.radius ** 2

    @staticmethod
    def convert_area_in_radius(area):
        return math.sqrt(area/math.pi)


c2 = Circle(Circle.convert_area_in_radius(80))

print(c2.radius)

如果我运行控制台,返回值为 5.04..

这对我来说很有意义,因为调用 def

convert_area_in_radius
。 但是Python从哪里知道它被分配给了
radius
方法的属性
init
呢?我的意思是我正在打电话

print(c2.radius)

有关于此属性的已知参考

radius

我希望得到相同的回报,但打电话却没有

print(c2.radius)

python variables attributes variable-assignment static-methods
1个回答
1
投票

您正在嵌套表达式。这是一个“嵌套”版本

# using a "function" associated to the class 
r = Circle.convert_area_in_radius(80)

# creating the instance
c2 = Circle(r)

# access to the attribute of the object
print(c2.radius)
© www.soinside.com 2019 - 2024. All rights reserved.