You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何未显式指定赋值规则,Python仍能识别radius属性?

问题:Python中静态方法返回值如何关联到类的属性?

我近期开始学习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,我理解调用convert_area_in_radius方法的作用,但疑惑Python如何知晓该方法的返回值被赋值给__init__方法的radius属性?我认为没有显式关联该属性,预期得到相同结果,但不该通过print(c2.radius)获取。

回答

这个过程是明确的参数传递+属性赋值逻辑,并非Python“自动知晓”关联,拆解步骤就能看明白:

  1. 先执行Circle.convert_area_in_radius(80):这个静态方法接收面积80,计算出对应的半径值(约5.04)并返回。
  2. 把该返回值作为参数传给Circle类的构造函数:创建Circle实例时,5.04被直接传给了__init__方法的radius参数。
  3. __init__方法里的self.radius = radius已经显式完成赋值:这里的self就是正在创建的c2实例,所以c2.radius自然等于传入的数值。

你觉得“没有显式关联”是忽略了构造函数的参数传递和__init__里的赋值代码,实际上这两步已经把静态方法的返回值和实例的radius属性绑定起来了。

内容的提问来源于stack exchange,提问作者JerryWest

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 08:56:05