gpt4 book ai didi

python - 使用关键字参数设置类属性

转载 作者:太空宇宙 更新时间:2023-11-03 20:53:25 27 4
gpt4 key购买 nike

这个热门question解决使用关键字参数设置实例属性的问题。但是,我想构造一个类,其实例都具有基于某些字典的相同属性。如何实现这一目标?

这是我的尝试。看来我对类定义还不太了解。

d = {'x': 1, 'y': 2}


# Here's what I'd like to do
class A:
__dict__ = d


# Answer from the linked question that works
class B:
def __init__(self, **kwargs):
self.__dict__.update(kwargs)


a = A()
b = B(**d)

# print(A.x) # Has no attribute x
# print(a.x) # Has no attribute x
print(b.x)

这很奇怪,因为 a.__dict__b.__dict__ 返回相同的东西。

最佳答案

type 函数可以接受允许它动态创建新类的参数:

B = type('B', (), d)

b = B()

print(b.x, b.y)

输出:

1 2

第一个参数是生成的类的名称。第二个是一个包含其基类的元组。特别是,以下两个片段(大致)是等效的:

class D(A, B, C):
pass

和:

D = type('D', (A, B, C), {})

最后一个参数是将名称映射到属性(方法和值)的 dict

关于python - 使用关键字参数设置类属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56167862/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com