我正在为python中的A Level课程编写一个程序,我需要使用继承访问从一个类到另一个类的属性。这是我想要做的一个例子。
class class1():
def __init__(self):
self.testValue = 'hello'
class class2(class1):
def __init__(self):
self.inheritedValue = class1.testValue
print(self.inheritedValue)
object = class2()
运行此代码时,我收到以下属性错误。
AttributeError:输入object' class1'没有属性' testValue'
任何人都有这个解决方案吗?
答案 0 :(得分:2)
首先是对代码样式的注释:类名用CamelCase编写,因此将它们命名为Class1和Class2。
其次,您的类 Class1没有所述属性,但每个实例都有。
所以你的class2应该是
class Class2(Class1):
def __init__(self):
super().__init__() # now we have everything Class1 provides us with
self.inheritedValue = self.testValue
print(self.inheritedValue)
因为Class2的每个对象也是Class1的对象
答案 1 :(得分:0)
该属性不在46 64 5f 69 64 00
0x46 = CType::Object
0x64 = d
0x5F = _
0x69 = i
0x64 = d
0x00 = NULL
范围内,而是以您实现它的方式存在。通过在类定义中传递它,它是继承的,但该属性尚不存在。也就是说,除非你调用了构造函数。有两种方法可以使用class2
内置函数(在现实生活中不推荐,请参阅here,这是一个很好的阅读。无论如何,这里有一些解决方案:
super
如果你不想调用你继承的类的构造函数,你可以这样做:
class class1():
def __init__(self):
self.testValue = 'hello'
class class2(class1):
def __init__(self):
class1.__init__(self)
print(self.testValue)
obj = class2()
旁注,class class1():
testValue = 'hello'
def __init__(self):
pass
class class2(class1):
def __init__(self):
self.inheritedValue = class1.testValue
print(self.inheritedValue)
obj = class2()
是内置的,因此您不应该使用它。