Python继承,删除继承,但结果没有改变

时间:2018-01-08 04:14:26

标签: python inheritance

以下是 Python的一个字节的示例。这是关于继承。

但是当我删除(SchoolMember)时,一切正常,结果没有改变。那么,使用什么继承。使用和不使用继承之间的区别是什么。

class SchoolMember:
    def __init__(self, name, age):
        self.name = name
        self.age = age
        print('(Initialized SchoolMember: {})'.format(self.name))

    def tell(self):
        print('Name:"{}" Age:"{}"'.format(self.name, self.age), end=" ")


class Teacher(SchoolMember):
    def __init__(self, name, age, salary):
        SchoolMember.__init__(self, name, age)
        self.salary = salary
        print('(Initialized Teacher: {})'.format(self.name))

    def tell(self):
        SchoolMember.tell(self)
        print('Salary: "{:d}"'.format(self.salary))


class Student(SchoolMember):
    def __init__(self, name, age, marks):
        SchoolMember.__init__(self, name, age)
        self.marks = marks
        print('(Initialized Student: {})'.format(self.name))

    def tell(self):
        SchoolMember.tell(self)
        print('Marks: "{:d}"'.format(self.marks))

t = Teacher('Mrs. Shrividya', 40, 30000)
s = Student('Swaroop', 25, 75)

print()

members = [t, s]
for member in members:
    # Works for both Teachers and Students
    member.tell()

1 个答案:

答案 0 :(得分:0)

当我删除(SchoolMember)时,一切正常,结果没有 改变。

仅删除 SchoolMember 会删除变量名称。 Teacher Student 类仍然在其_ bases __属性中引用原始类。

尝试以下方法:

del SchoolMember.__init__
del SchoolMember.tell

这将通过删除继承的方法来清空父类。

那么,继承的用途是什么

继承的目的是代码重用。在您的示例中,它允许 SchoolMember 中的代码用于其他两个类,即 Teacher Student