目前,\uusetattr\只起作用。课堂上有没有类似的方法?我之所以问这个问题,是因为我想在用户在类中定义时按顺序收集已定义属性的列表,如下所示:
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_u只由实例调用,如下所示:
^{pr2}$那么,对于python类,有没有等价的setattr\uu?主要目的是当用户在类中定义define属性时,按顺序收集define属性。在
如果在类的元类上定义
__setattr__()
,则在设置类的属性时将调用它,但仅在创建类之后:但在类定义时它不起作用,所以它可能不是您想要的。在
在元类
__init__()
中获取类属性是可行的,但是您会失去定义的顺序(以及多个定义)。在是的,但是that's not how you want to do it。在
要解决您的问题而不是您的问题的方法是
设置字段创建的时间戳创建Field
对象的计数器,并将计数器的当前值设置为已创建的值:然后我将创建一个方法来返回按计数器值排序的所有字段:
^{pr2}$它的用法很直观:
显然,字段是按对象创建的时间排序的,而不是按字段的创建时间排序,但这对您来说已经足够了。它是?在
相关问题 更多 >
编程相关推荐