python - 在类初始化时取消引用变量

标签 python dictionary

这是我初始化类字典的代码:

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/

相关文章:

python - 邮件 URL 中的正则表达式匹配密码

python - 为什么此代码在第 11 行引发 RecursionError?

python - Dictionary 赋值后在 MongoEngine 中变为 BaseList

python - 你如何将列表作为新项目加入列表字典 - python?

python - 在python字典中用 "None"替换空值

python - 将查询数据保存到数据帧时出错

python - 如何在 PyCharm 中设置 ipython 配置文件

python - 如何测试MongoEngine的DoesNotExist异常

dictionary - Realm中的HashMap序列化(移动数据库)

python - 基于字典向数据框添加新列