Herencia y polimorfismo de clases de python y funciones integradas de clases

Herencia y polimorfismo de las clases de python
  • Funcionalidad de los tipos primitivos obtenidos por herencia
  • Lo que se hereda se llama clase base o clase padre, y lo que se hereda se llama subclase.
  • La subclase (heredera) tiene todos los métodos y atributos de clase de la clase padre (heredada)
  • La clase principal (heredada) no tiene las propiedades y métodos de la subclase (heredadora)
  • Si la subclase hereda el método de la clase principal y la subclase también tiene el mismo método, el método de la subclase entra en vigor y puede usarlo para reescribir el método heredado (polimorfismo de la clase )

示例

class Parent:#默认继承object类
    name = "father"
    age = 56
    moneys = "1000w"

    def __init__(self) -> None:
        pass
        # self.name = "father"
        # self.age = 56
        # self.moneys = "1000w"

    def behaver(self):
        print("{}老了走不动了".format(self.age))

    def money(self):
        print("我继承了爸爸的money{}".format(self.moneys))


class children(Parent):#继承父类,参数可以是多个父类  就是多重继承
    def __init__(self) -> None:
        self.name = "child"
        self.age = 26

    def behaver(self):
        print("{}年轻健步如飞".format(self.age))

    def money2(self):
        print("我没有money,")


# parent1 = Parent()
# parent1.behaver()

child1 = children()#实例化child类
child1.money() #继承了父类的money

#类的多态
child1.behaver()#26年轻健步如飞   因为方法名和属性名一致 所以重新了父类的方法
función súper ()
  • Ejecutar el constructor de la clase padre en el constructor de la subclase y pasar parámetros
  • super (nombre de la subclase, self) El método de la clase principal y puede pasar parámetros
class Parent:
    def __init__(self, money) -> None:
        self.name = "father2"
        self.age = 54
        self.moneys = money

    def money(self):
        print("我继承了爸爸的money{}".format(self.moneys))


class children(Parent):
    def __init__(self) -> None:
        super(children, self).__init__("5000w")  # 实例化的时候执行父类的构造函数
        self.name = "child"
        self.age = 26

    def money2(self):
        print("我没有money,")


child1 = children()
child1.money()  # 继承了爸爸的money5000w
funciones de orden superior en una clase
Nombre de la función uso valor de retorno
_ cadena _() Generalmente devuelve la información de descripción de la clase (los ejemplos son los siguientes) una pieza de información descriptiva
_ getattr _(auto,clave) Key llama a cualquier nombre de atributo no existente (key) y devolverá un mensaje de aviso Puede ser informativo o no devuelto
_ setattr _(auto,clave,valor) Interceptar atributos y valores que no existen en la clase actual, y puede realizar algún procesamiento dispensable
_ llamar _ Pasar parámetros a un objeto de instancia de una clase activará dispensable
  • __str__
class text:
    def __str__(self) -> str:
        return "这是一个测试类"
print(text()) #这是一个测试类
  • __getattr__
class text2:
    def __getattr__(self, key) -> Any:
        print("当前的这个变量:{}不存在".format(__name))
a = text2()
a.rte  #当前的这个变量:rte不存在
  • __setattr__
class text3:
    def __init__(self, name) -> None:
        self.name = name
#拦截当前类中不存在的属性与值,如果不存在  就添加
    def __setattr__(self, key: str, value: Any) -> None:
        if key not in self.__dict__:
            self.__dict__[key] = value

t3 = text3("wsm")
t3.age = "123"
print(t3.name)#wsm
print(t3.age)#123
  • __call__
class text:
    def __call__(self, **kwargs) -> None:
        print("这是一个__call__", kwargs)

t = text()
t(name="dweiwei")#这是一个__call__ {'name': 'dweiwei'}

Supongo que te gusta

Origin blog.csdn.net/qq_51075057/article/details/130691427
Recomendado
Clasificación