__getattr__ on a class and not (or as well as) an instance

前端 未结 2 1697
一整个雨季
一整个雨季 2021-01-06 06:25

I know I can write code like:

class A :
    def __getattr__ (self, name) :
        return name

to trap access to undefined attributes on an

2条回答
  •  挽巷
    挽巷 (楼主)
    2021-01-06 07:10

    You can use a metaclass:

    In [1]: class meta(type):
       ...:     def __getattr__(self, name):
       ...:         return name
       ...:     
       ...:     
    
    In [2]: class A(object):
       ...:     __metaclass__ = meta
       ...:     def __getattr__(self, name):
       ...:         return name
       ...:     
       ...:     
    
    In [3]: A().attr
    Out[3]: 'attr'
    
    In [4]: A.attr
    Out[4]: 'attr'
    

提交回复
热议问题