我正在玩super(),以便掌握它的使用方法。因此,我尝试使用它通过它的子类访问基类的__name__
和__doc__
属性。这就是我的例子:
class baseclass:
"This is the base class"
class subclass(baseclass):
def print_base_name(self):
print(super(subclass,self).__name__)
def print_base_doc_string(self):
print(super(subclass, self).__doc__)
subinstance=subclass()
subinstance.print_base_doc_string()
subinstance.print_base_name()
运行代码后,我收到了这个输出:
这是基类
然后出现一个基本上说错误的错误:
属性错误:'超级'对象没有属性'
__name__
'
为什么第一个语句成功打印文档字符串,而第二个语句无法打印类名?另一件事是错误消息使用 super 而不是基类'用于引用相关对象的名称。我原以为super(subclass,self).__name__
会在内部被基类取代,所以基本上它会模糊地类似于baseclass.__name__
。但是,显然情况并非如此,因为错误消息明确提到了 super 对象。
答案 0 :(得分:0)
您使用的是哪个版本的Python?这些方法都不能在2.7中运行代码。问题是你将{{1}}用于旧式的类:
{{1}}