gpt4 book ai didi

python - python 是否有类似于 __setattr__ 的方法但是用于 python 类?

转载 作者:太空狗 更新时间:2023-10-30 02:34:42 25 4
gpt4 key购买 nike

目前 __setattr__ 仅适用于实例。上课有没有类似的方法?我问这个问题是因为当用户在类中定义它时,我想按顺序收集已定义属性的列表,如下所示:

class CfgObj(object):
_fields = []
def __setattr__(self, name, value):
self._fields.append([name, value])
object.__setattr__(self, name, value)

class ACfg(CfgObj):
setting1 = Field(str, default='set1', desc='setting1 ...')
setting2 = Field(int, default=5, desc='setting2...')

我知道上面的代码不会按预期工作,因为 __setattr__ 仅由实例调用,如下所示:

acfg = ACfg()
acfg.c = 1
acfg._fields == [['c', 1]]

那么,python 类是否有等效的__setattr__?主要目的是在类中定义用户定义的属性时,按顺序收集。

最佳答案

是的,但是 that's not how you want to do it .

class MC(type):
def __init__(cls, name, bases, dct):
print dct
super(MC, cls).__init__(name, bases, dct)

class C(object):
__metaclass__ = MC
foo = 42

关于python - python 是否有类似于 __setattr__ 的方法但是用于 python 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6808012/

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