这是我初始化类字典的代码:
class Directory:
def __init__(self, **kwds):
self.__dict__.update(kwds)
obj = Directory(name=dict())
在上面的例子中,键是 name
,可以使用以下方式访问:
obj.__dict__.['name']
或 obj.name
Q1.如何初始化键值为变量值的类字典?
代码应该是这样的:
name = 'bin'
obj = Directory(name=dict()) #here I want the variable `name` to be replaced by its value i.e. `bin`
Q2.是否有其他最佳实现类的方式? (可能是 __slots__
)
谢谢!
最佳答案
我是否认为您希望能够使用关键字参数调用构造函数,但使用变量的值作为参数名称,而不是变量名称本身?
不能用那种精确的语法来完成,但这里有一些您可以使用的其他语法:
name = 'bin'
obj = Directory(**{name: dict()})
如果您对这种语法感到满意,您可以直接使用它而无需更改类(它会正常工作)。
另一种语法,如果你只想设置一个值:
name = 'bin'
obj = Directory(name, dict())
如果您对这种语法感到满意,可以像这样重写类来支持它:
class Directory:
def __init__(self, name, value):
self.__dict__[name] = value
对于第二季度,__slots__
不是您要查找的内容。它允许您指定“此类的所有成员都具有相同的字段”(从而避免需要字典)。你有一个很好的例子,说明你不能使用 __slots__
因为你类的所有实例可能有不同的成员。
关于python - 在类初始化时取消引用变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5535586/