【发布时间】:2016-03-31 18:30:31
【问题描述】:
我有一些看起来像这样的代码:
class Log(object):
@property
def log(self):
return self.log
class ExampleClass2(ExampleClass, Log):
class ExampleClass3(object):
@property
def log_value(self):
self.log.info('Hi!')
但是我遇到了一个错误,
'ExampleClass3' object has not attribute 'log'
我猜我需要在 DEF 中添加一个__init__() 方法,并且我尝试过使用
super(ExampleClass2.ExampleClass3, self).__init__()
但我仍然无法访问 log。有什么建议么?
【问题讨论】:
-
不要使用嵌套类。几乎没有理由这样做。
-
也就是说
print_banana属于DEF类,它继承了object,所以它没有从BaseClass1类继承print。 -
一个类定义在另一个类中并不意味着任何一个类都是另一个类的后代。
-
您需要提供导致您遇到的错误的代码的最小示例。如果您在
print_banana方法定义前添加def,您提供的代码将运行良好。 -
print 'banana'表示您正在使用没有from __future__ import print_function的Python 2,因此print是一个不能用作属性名称的关键字,就像您在此处所做的那样。
标签: python inner-classes