我有两个python类
class A:
"""
This is a class retaining some constants
"""
C=1
class B:
VAR = None
def __init__(self):
b.VAR = A
def f(self, v=VAR ):
print(v.C)
clb = B()
clb .f()
AttributeError: 'NoneType' object has no attribute 'C'
所以我要做的是用类A的引用填充B::init()中的B::VAR类变量,然后在B::f()中使用默认参数v(保留VAR)访问A::C。 我打算使用v作为B::f()中代码的默认值,如果需要在调用函数时对其进行更改。 我的设想可能吗
谢谢,
是的,这是可能的:
问题是默认参数
v=VAR
是对B.VAR
的旧引用,它是None
,而不是对象clb.VAR
的更新值此图显示
f()
的旧版本有一个指向None的默认值v,因为这是在定义类B时,在创建clb:B对象之前,在方法定义时计算的,其中VAR是类属性。 我的建议是在运行时通过self
使用对象的变量设置v
,该变量在__init__
中更改为A
这是另一种方法。然而,我想知道你到底想做什么,因为这看起来真的很奇怪
相关问题 更多 >
编程相关推荐