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:删除原有类变量后类方法的运行情况
可以正常运行,只要你在类方法逻辑中不再调用已经被删除的原有类变量即可。
类方法内部支持两种变量声明:
- 直接写
变量名 = 值:属于方法的局部变量,仅在方法运行期间生效,运行结束后自动销毁。 - 写
cls.变量名 = 值:属于新增类变量,方法运行结束后,所有类和类实例都可以访问这个新的类变量。
你也可以直接使用调用方法时传入的参数做任意计算,不会出现运行异常。
内容的提问来源于stack exchange,提问作者Anshul Thakur
相关产品推荐
相关产品推荐

