gpt4 book ai didi

Python::父类(super class)中的属性在继承子类中不可用

转载 作者:行者123 更新时间:2023-11-28 21:49:10 25 4
gpt4 key购买 nike

我想知道为什么下面的失败;基本上,继承子类 (SubClass) 似乎无法访问它继承自的父类(super class) (SuperClass) 中的属性。

顺便说一下,下面的所有三个文件都在同一个目录中,为了完整起见,我使用的是 Python3。

有什么想法吗?我认为这是非常简单的事情。谢谢!

父类(super class)(./super_class.py 中的SuperClass) ...

class SuperClass(object):

def __init__(self):
self.varSuper = 'varSuper_value'

继承子类(./sub_class.py中的SubClass) ...

from super_class import SuperClass

class SubClass(SuperClass):

def __init__(self):
super(SuperClass, self).__init__()
self.varSub = 'varSub_value'

驱动程序/测试程序脚本(./driver.py) ...

#! /usr/bin/env python3

from sub_class import SubClass

print(SubClass().varSub) # Works: "varSub_value"
print(SubClass().varSuper) # Excepts: I expected "varSuper_value"

异常...

user@linux$ ./driver.py
varSub_value <--- GOOD
Traceback (most recent call last):
File "./driver.py", line 6, in <module>
print(SubClass().varSuper) <--- NO GOOD
AttributeError: 'SubClass' object has no attribute 'varSuper'

最佳答案

您正在使用 super()功能错误。你应该使用:

super(SubClass, self).__init__()

或者在python3中

super().__init__()

按照您编写的方式,您是在父类之后开始 MRO,而不是在您自己的类之后..

关于Python::父类(super class)中的属性在继承子类中不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33881916/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com