Python:如何正确重新分配属性以使用父类函数

时间:2019-07-03 22:34:38

标签: python inheritance

我正在尝试在Python中创建一个父类和一个子类。我已经在父级内部创建了getter函数,这些函数使用self来调用父级的属性。创建子项时,我不想覆盖该功能,只需重新分配该值即可。当我这样做并从孩子那里调用吸气剂时,我仍然会收到父母的属性值。如何强制代码使用孩子的属性,而不必重写getter函数?

我的班级定义如下:

class Dad:
    def __init__(self):
        self.likes = "Baseball"
        self.name = "John"

    def get_likes(self):
        print(self.likes)

    def get_name(self):
        print(self.name)

    def works(self):
        print("Programmer")


class Son(Dad):
    def __init__(self):
        self.likes = "Soccer"
        super().__init__()

    def works(self):
        print("Student")

尝试运行代码时,

d = Dad()
s = Son()
d.get_name()
d.get_likes()
d.works()
s.get_name()
s.get_likes()
s.works()

输出看起来像这样:

John
Baseball
Programmer
John
Baseball
Student

我想要的输出是:

John
Baseball
Programmer
John
Soccer
Student

1 个答案:

答案 0 :(得分:1)

您只需要设置Son属性即可覆盖父类的属性:

class Son(Dad):
    def __init__(self):
        super().__init__()
        self.likes = "Soccer"

这是实现子优先级的规范方法。