Python: explicación detallada de la relación de herencia entre la clase principal y la subclase. (¿Cómo agregar nuevos atributos a las subclases?)

1. Definición de la clase

class 类名:

    def __init__(self, 参数表)def 方法名(self, 参数表):

self: se refiere a una instancia de un objeto

2. Definición de subcategorías

Mecanismo de herencia de clases: reutilización de código
General -> especial, heredar propiedades y métodos de la clase principal

class 子类名(父类名)def __init__(self, 参数表, 新的属性)super().__init__(参数表)
	self.新的属性 = 新的属性
	
	def 重定义方法(self, 参数表):

3. Ejemplos:

(1) Pregunta
Inserte la descripción de la imagen aquí
(2) Procedimiento

class People:

    def __init__(self, name, city):
        self.name = name
        self.city = city

    def moveto(self, newcity):
        self.city = newcity

    def __lt__(self, other):
        return self.city < other.city

    def __str__(self):
        return '(%s, %s)' % (self.name, self.city)

    __repr__ = __str__

class Teacher(People):

    def __init__(self, name, city, school):
        super().__init__(name, city)        #保留父类初始化方法
        self.school = school                # 增加新类

    def moveto(self, newschool):
        self.school = newschool

    def __lt__(self, other):
        return self.school < other.school

    def __str__(self):
        return '(%s, %s, %s)' % (self.name, self.city, self.school)

    __repr__ = __str__
'''
s = list()

s.append(People('Jane', 'Beijing'))
s.append(People('Mike', 'Shanghai'))
s.append(People('CoCo', 'Anhui'))
s.append(People('kang', 'Chengdu'))
'''
s = list()

s.append(Teacher('Jane', 'Beijing', 'SCU'))
s.append(Teacher('Mike', 'Shanghai', 'BKU'))
s.append(Teacher('CoCo', 'Anhui', 'HNU'))
s.append(Teacher('kang', 'Chengdu', 'ZZU'))
print('original:', s)

s.sort()
print('sorted:', s)
s1 = Teacher('Jane', 'Beijing', 'SCU')
s1.moveto('TJU')
print('the new school of %s is: %s' % (s1.name, s1.school) )

resultado:

original: [(Jane, Beijing, SCU), (Mike, Shanghai, BKU), (CoCo, Anhui, HNU), (kang, Chengdu, ZZU)]
sorted: [(Mike, Shanghai, BKU), (CoCo, Anhui, HNU), (Jane, Beijing, SCU), (kang, Chengdu, ZZU)]
the new school of Jane is: TJU

Supongo que te gusta

Origin blog.csdn.net/qq_40797015/article/details/111999203
Recomendado
Clasificación