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

Python类方法使用疑问:返回None、变量访问及传参问题

Python类方法问题解答

问题1:类方法调用后打印返回值为None的原因

你提供的代码里year2020类方法没有显式声明return返回值,Python中所有函数、方法在没有主动写返回语句时,默认都会返回None,这就是打印结果为None的原因。
你当前的方法仅实现了给Item类新增value2020类属性的逻辑,如果要返回计算结果,修改方法即可:

@classmethod
def year2020(cls,val1,val2):
    cls.value2020 = cls.quantity1 + cls.quantity2 + cls.discount_price
    return cls.value2020

问题2:类方法对类变量、实例变量的访问权限

  • 类方法可以直接访问类变量:类方法的第一个固定参数是cls,代表类本身,所以可以直接读取、修改类层面定义的所有变量。
  • 类方法不能直接访问实例变量:实例变量是绑定到具体类实例的属性,类方法被调用时可能还没有生成任何实例对象,自然无法直接读取实例的属性。如果需要在类方法中使用实例变量,只能手动把实例对象作为参数传入方法。

问题3:删除原有类变量后类方法的运行情况

可以正常运行,只要你在类方法逻辑中不再调用已经被删除的原有类变量即可。
类方法内部支持两种变量声明:

  1. 直接写变量名 = 值:属于方法的局部变量,仅在方法运行期间生效,运行结束后自动销毁。
  2. 写cls.变量名 = 值:属于新增类变量,方法运行结束后,所有类和类实例都可以访问这个新的类变量。
    你也可以直接使用调用方法时传入的参数做任意计算,不会出现运行异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 23:36:06