gpt4 book ai didi

python - 找出类中某个字段的多个定义

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

我如何才能发现一个类在其主体中对一个字段有多个定义?例如:

class cl:
a = 'abc'
a = 'qa'

print cl.a

这里我们将 cl.a 打印为 'qa'。但是,在这种情况下有什么方法可以引发异常或发现该字段有多个定义。我尝试在类 dict 中查找,还使用 ​​dir() 方法获取所有属性的列表。它们都没有显示该字段的多个定义。

最佳答案

元类的 __prepare__ 方法可以返回一个替代映射类型,用作类的属性字典。该映射可以允许对任何新键进行赋值,但如果对命名空间中已存在的键再次尝试赋值,则会引发异常。

class AssignOnceDict(dict):
def __setitem__(self, key, value):
if key in self:
raise Exception("Duplicate assignment")
super().__setitem__(key, value)

class AssignOnceMeta(type):
def __prepare__(name, bases, **kwargs):
return AssignOnceDict()


class cl(metaclass=AssignOnceMeta):
a = 1
a = 2 # raises an exception

关于python - 找出类中某个字段的多个定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55468534/

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