如何在另一个类的函数内使用变量 - Python

时间:2017-06-16 07:27:53

标签: python python-3.x class oop

我正在尝试访问函数内部的另一个变量,也就是来自另一个类的变量,所以我用这种方式编码

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'。那么,访问该变量的最简单方法是什么?

2 个答案:

答案 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中重新定义该功能,但如果您这样做则需要它。