Introducción y uso básico de clases e instancias de objetos de Python.

Conceptos básicos de la tecnología orientada a objetos.

  • Clase: utilizada para describir una colección de objetos con las mismas propiedades y métodos. Define las propiedades y métodos comunes a cada objeto de la colección. Los objetos son instancias de clases. En pocas palabras, una clase es una plantilla y una instancia es un objeto creado en función de la clase.

  • **Variables de clase:** Las variables de clase son públicas en todo el objeto instanciado. Las variables de clase se definen en la clase y fuera del cuerpo de la función. Las variables de clase generalmente no se utilizan como variables de instancia.

  • **Variables de instancia:** Las variables definidas en los métodos solo actúan sobre la clase de la instancia actual.

  • **Miembros de datos:** Las variables de clase o variables de instancia se utilizan para manejar datos relacionados con la clase y sus objetos de instancia.

  • **Método: **Función definida en la clase.

  • **Creación de instancias:** Crea una instancia de una clase, un objeto específico de la clase.

  • **Objeto:** Una instancia de una estructura de datos definida por una clase. Los objetos incluyen dos miembros de datos (variables de clase y variables de instancia) y métodos.

  • Encapsulación : coloque varios métodos o propiedades en una clase privada, y otros objetos no accederán a esta clase privada.

  • **Herencia:** Una clase derivada hereda los campos y métodos de una clase base.

    La herencia permite que un objeto de una clase derivada sea tratado como un objeto de clase base. Por ejemplo, existe un diseño de este tipo: un objeto de tipo Perro se deriva de la clase Animal, por lo que Perro también es un Animal.

  • **Reescritura de métodos:** Si el método heredado de la clase principal no puede satisfacer las necesidades de la subclase, se puede reescribir. Este proceso se denomina anulación de método, también conocido como reescritura de métodos.

  • Polimorfismo : diferentes objetos, que llaman al mismo método de la misma clase, muestran diferentes formas.

La herencia, la encapsulación y el polimorfismo son las tres características principales de la orientación a objetos. Las clases pueden darse cuenta de las tres características principales de la orientación a objetos.

En comparación con otros lenguajes de programación, Python agrega mecanismos de clases sin agregar nueva sintaxis y semántica tanto como sea posible.


Objetos en Python

  • Los objetos son uno de los conceptos más básicos en Python, en Python todo puede ser un objeto.

    Python maneja todos los datos como objetos y las declaraciones de asignación crean objetos y variables en la memoria.

  • Los objetos tienen tres atributos básicos: tipo, identidad y valor.

    print(type(500))	# 输出:<class 'int'>		# 对象的类型
    print(id(500))		# 输出:2556827724176		# 对象的身份标识
    print(500)			# 输出:500				# 对象的值
    

Definición de clase

Breve descripción

Aunque cualquier variable en Python puede llamarse objeto, el objeto real es una instanciación específica de los atributos y métodos de clase. Sólo mediante el uso de clases se puede crear un objeto verdadero.

En Python, las clases se definen mediante la palabra clave class y la convención general para los nombres de clases es poner en mayúscula la primera letra.

  • Defina el formato básico de una clase:

    class 类名(父类):
       pass  # 此处可添加属性和方法
    
    class 类名:
       pass  # 此处可添加属性和方法
    

Nota:

  • De forma predeterminada, todas las clases en Python3 heredan implícitamente la clase de objeto, por lo que en Python3 se recomienda que no sea necesario heredar explícitamente la clase de objeto.

  • Clases internas en Python, las clases internas de Python no solo se pueden definir en clases, sino también en métodos.


Atributos de clase

Dividido en dos tipos: atributos de clase y atributos de instancia :

  • Atributos de clase : atributos vinculados a la clase. Hay una y solo una copia . Es un atributo común al que puede acceder cada instancia.

    • Los atributos de clase se pueden llamar directamente a través de la clase o mediante un objeto instanciado de la clase, similar a las constantes estáticas en Java.

    • Nota: ¡Cambiar el valor de un atributo de clase a través del objeto de creación de instancias de la clase en Python no modificará el valor de la variable de clase!

      Porque modificar los atributos de una clase a través de una instancia en realidad crea un atributo de instancia para la instancia con el mismo nombre que el atributo de clase , y luego modifica el atributo de instancia . La prioridad de acceso al atributo de instancia es mayor que el atributo de clase , por lo que el atributo de instancia se accede primero durante el acceso, lo que bloqueará Eliminar el acceso a los atributos de clase

      class Person:
          name = 'aaa';
      
      person = Person()
      print(person.name)		# 输出:aaa
      
      person.name = "bbb"
      print(person.name)		# 输出:bbb
      print(Person.name)		# 输出:aaa
      
      del person.name			# 可以使用 del 删除与类属性同名的实例属性
      print(person.name)		# 输出:aaa
      
  • Atributos de instancia : cada instancia tiene los suyos y son independientes entre sí.

    Accede a las propiedades de la instancia:

    • Dentro del método de instancia, pase "self.property name"
    • Fuera de la clase, acceda indirectamente llamando a métodos de instancia

    **Propiedades de instancia privada:** El nombre de la propiedad comienza con un guión bajo ( _private_attrs), lo que indica que la propiedad se declara privada y no se puede usar ni acceder directamente fuera de la clase. La forma de usarlo en un método dentro de una clase es:self._private_attrs


métodos de clase

Dentro de una clase, utilice la palabra clave def para definir funciones. Las funciones definidas en una clase también se denominan métodos.

  • Métodos de clase :

    En Python, un método de clase es un método decorado por el decorador @classmethod , lo que indica que es un método de clase.

    El primer parámetro del método de clase es cls , que representa la clase misma. Esto permite que los métodos de clase accedan y modifiquen propiedades de clase y otros métodos de clase.

    Los métodos de clase se pueden llamar directamente a través de la clase o mediante un objeto instanciado de la clase (no recomendado)

    Herencia de subclases: las subclases pueden heredar y anular los métodos de clase de la clase principal.

  • Método de instancia :

    A diferencia de las definiciones de funciones generales, el primer parámetro formal de un método de instancia debe ser self. El significado de self aquí se refiere al objeto instanciado.

    Nota: self no es una palabra clave en Python, por lo que el primer parámetro formal del método de instancia en realidad puede recibir otro nombre, pero la práctica de la industria es nombrarlo self.

    Método de instancia de llamada:

    • Dentro del método de instancia, pase "self.methodname()"
    • Fuera de la clase, pase "nombre del objeto. Nombre del método de instancia (excepto parámetros propios)"
  • Método estático:

    Decorador: los métodos estáticos se definen utilizando el decorador @staticmethod .

    Parámetros: los métodos estáticos no tienen parámetros especiales y no requieren una referencia a la clase en sí ni a una instancia. Son similares a las funciones normales.

    No se puede acceder a las propiedades y métodos de la clase: los métodos estáticos no pueden acceder directamente a las propiedades y métodos de la clase porque no pasan una clase o instancia como parámetro.

    No es necesario crear una instancia del objeto: se pueden llamar métodos estáticos desde la propia clase sin crear una instancia del objeto. Por ejemplo, MiClase.mi_método_estático()

    Sin herencia por subclases: los métodos estáticos no son heredados por las subclases porque no están asociados con la clase o instancia.

    Escenarios comunes: los métodos estáticos se utilizan normalmente para operaciones relacionadas con la clase pero no con una instancia específica, como funciones de utilidad o funciones auxiliares.

  • Método privado :

    Un método que comienza con dos guiones bajos ( __private_method) indica que el método está declarado como un método privado y no se puede llamar fuera de la clase.

    El método de llamada dentro de la clase es:slef.__private_methods


funciones especiales de clase

Existen principalmente los siguientes tipos:

  • __init__(Función de inicialización): se llama automáticamente cuando se llama a una clase para crear un objeto para completar la inicialización del objeto.

    La función de inicialización en Python no admite la sobrecarga de métodos, solo hay una

    En Python, **mapla función de inicialización se puede definir como una transferencia flexible de múltiples parámetros.

    class TestClassA:
         def __init__(self, a, b):
             print("我是python的构造方法");
    
    class TestClassB:
        #定义灵活的可传递任何数据的构造方法
        def __init__(self, **map):
            print("我是python的构造方法" + map.get("name"));
            print("我是python的构造方法" + map.get("age"));
    

    Extensión: __init__el uso del método es similar al método constructor en Java, pero no es un método constructor. El método para crear una instancia en Python es. __new__Este método se usa principalmente de forma predeterminada en Python y generalmente no es necesario redefinido.

  • __del__(Destructor): se llamará automáticamente cuando el objeto se recicle

    No es necesario escribir tanto el constructor como el destructor al definir la clase.


herencia de clase

  • herencia única

    gramática:

    class <类名>(父类名)
    	<语句>
    

    Ejemplo:

    class Student(people):
            grade = ''
            def __init__(self,n,a,w,g):
                #调用父类的构函
                people.__init__(self,n,a,w)
                self.grade = g
            #覆写父类的方法
            def speak(self):
                print("%s is speaking: I am %d years old,and I am in grade %d"%(self.name,self.age,self.grade))
    
        s = Student('ken',20,60,3)
        s.speak()
    
  • Herencia múltiple de clases.

    gramática:

    class 类名(父类1, 父类2, ...., 父类n)
    	<语句1>
    

    Nota: el orden de las clases principales entre paréntesis. Si existe el mismo nombre de método en la clase principal, pero no se especifica al usarlo en la subclase, Python busca de izquierda a derecha, es decir, cuando el método no se encuentra en la subclase, busca de izquierda a derecha. para ver si el método está incluido en la clase principal .

Supongo que te gusta

Origin blog.csdn.net/footless_bird/article/details/133251787
Recomendado
Clasificación