这个问题的答案解释了如何使用元类实现静态/类属性的
问题是:这是否可能,如果可以,该怎么做?有人能提供一个最小的工作示例吗?
__getattr__
。然而,我想为由type()
生成的类实现__getattr__
和__getattribute__
,并使事情变得更有趣的是,该类继承了一个具有自定义元类的类,必须正确执行该元类。class Inherited(metaclass=SomeFancyMetaclass):
...
generated_class = type("GeneratedClass", (Inherited,), {})
def __class_getattr__(cls, name): # __getattr__ for class, not sure how the code shall look exactly like
return getattr(cls, name)
setattr(generated_class, "__getattr__", __class_getattr__) # similarly for __getattribute__
问题是:这是否可能,如果可以,该怎么做?有人能提供一个最小的工作示例吗?
__getattr__
和__setattr__
方法,然后使用元类来生成类。我相信这样可以完成任务。 - juanpa.arrivillagatype(“GeneratedClass”,(Inherited,),{ '__getattr__':your_getattr_impl})
,并且your_getattr_impl
应该有一个签名(self, name)
(应使用实例而非cls
,因为在使用时将传递类的实例),除非您要在元类级别进行操作。此外,您真的不需要元类来动态创建具有自定义属性的类以用于dunder函数。您究竟想达到什么效果? - metatoastertype(...,...,...)
一样使用MyCustomMeta(...,...,...)
,但是他们必须实际实现MyCustomMeta
。我的意思是,这一切可能都有点过头了。为什么要停下来呢... - juanpa.arrivillaga