我正在尝试访问函数内部的另一个变量,也就是来自另一个类的变量,所以我用这种方式编码
class Helloworld:
def printHello(self):
self.hello = 'Hello World'
print (self.hello)
class Helloworld2(Helloworld):
def printHello2(self)
print(self.hello)
b = Helloworld2()
b.printHello2()
a = Helloworld()
a.printHello()
然而,这给了我这个错误:AttributeError: 'Helloworld2' object has no attribute 'hello'
。那么,访问该变量的最简单方法是什么?
答案 0 :(得分:2)
那是因为你永远不会致电printHello(self)
宣布你的self.hello
。
要使其正常工作,您需要这样做:
class Helloworld2(Helloworld):
def printHello2(self):
super().printHello()
print(self.hello)
或将self.hello的声明移至__init__()
,这将是更优选的方式。
答案 1 :(得分:1)
您应该通过__init__()
函数初始化类的实例,这意味着在创建时,会设置这些值。
这将使您的代码看起来像:
class Helloworld:
def __init__(self):
#sets self.hello on creation of object
self.hello = 'Hello World'
def printHello(self):
print (self.hello)
class Helloworld2(Helloworld):
def printHello2(self):
print(self.hello)
b = Helloworld2()
b.printHello2()
a = Helloworld()
a.printHello()
另一种方法是,使用当前代码,只需在顶层,printHello()
或b.printHello()
内拨打printHello2
即可。请注意,在这种情况下,您实际上不需要使用super().printHello()
,因为您没有在Helloworld2
中重新定义该功能,但如果您这样做则需要它。