Как мы можем получить доступ к наследуемым атрибутам класса в случае метаклассов - PullRequest
0 голосов
/ 04 августа 2020

Несмотря на то, что var1 является членом класса ChildClass, почему я не могу получить доступ к var1, используя ChildClass.var1

class MyType(type):
    def __getattribute__(self, name):
        print('attr lookup for %s' % str(name))
        return object.__getattribute__(self, name)
class BaseClass(object):
    __metaclass__ = MyType
    var1 = 5
class ChildClass(BaseClass):
    var2 = 6
print(ChildClass.var2) #works
print(ChildClass.var1) #fails

Я получаю следующую ошибку:

AttributeError: 'MyType' object has no attribute 'var1'

Спасибо

1 Ответ

2 голосов
/ 04 августа 2020

Поскольку MyType - это type, используйте type.__getattribute__ вместо object.__getattribute__:

class MyType(type):
    def __getattribute__(self, name):
        print('attr lookup for %s' % str(name))
        return type.__getattribute__(self, name)
...