Comprende las clases y los objetos de Python en diez minutos, ¿por qué no vienes a echar un vistazo?

En primer lugar, Python es un lenguaje de programación orientado a objetos, y los lenguajes de programación orientados a objetos tienen tres características principales: encapsulación, herencia y polimorfismo. Entonces, la clave para aprender Python es dominar estos puntos.

1. Paquete

La encapsulación es fácil de entender, en pocas palabras, significa encapsular datos en una lista, que es la encapsulación de datos.
Encapsular una parte del código en una función es encapsular el código.
Luego, encapsule las propiedades y los métodos para obtener el objeto.

En primer lugar, podemos definir una clase, y hay atributos y métodos en esta clase.

class XiaoMing:
    #属性
    height = 180
    weight = 65
    sex = '男'
    #方法
    def run(self):
        print('小明在跑步')
    def sleep(self):
        print('小明在睡觉')

Una vez definida la clase, se crea un objeto de clase y es un contenedor para el espacio de nombres creado por la definición de la clase.

Vale la pena señalar que el objeto de clase admite dos operaciones: referencia de atributo e instanciación.

La sintaxis de referencia de atributo es la sintaxis estándar general: obj.name. Por ejemplo, XiaoMing.height y XiaoMing.run son referencias de atributo, el primero devolverá un dato y el segundo devolverá un objeto de método.

In[1]:print(XiaoMing.height)
Out[1]:180

In[2]:print(XiaoMing.run)
Out[2]:<function XiaoMing.run at 0x0000021C6239D0D0>

Aquí también admite operaciones de asignación en atributos de clase, como asignar un nuevo valor al atributo de peso en la clase.

In[3]:print(XiaoMing.weight)
Out[3]:65

In[4]:XiaoMing.weight = 100
In[5]:print(XiaoMing.weight)
Out[5]:100

La instanciación de una clase puede considerar el objeto de clase como una asignación de función sin parámetros a una variable local.
como sigue:

In[6]:ming = XiaoMing()

Ming es un objeto de instancia creado después de crear una instancia del objeto de clase. Las propiedades y métodos de la clase también se pueden llamar a través del objeto de instancia.

In[7]:ming.run()
Out[7]:小明在跑步

In[8]:print(xiaoming.height)
Out[8]:180
#通过向类对象调用方法返回的方法对象中传入实例对象也可以达到同样效果。
In[11]:XiaoMing.run(ming)
Out[11]:小明在跑步

método __init__

Pero la clase general no es tan simple en el proceso de instanciación, en general, la clase tiende a crear un objeto de instancia con un estado inicial.

Por lo tanto, se puede definir un método __init__ en la clase para ayudar a recibir y pasar parámetros.
Si una clase define el método __init__, entonces se llamará automáticamente al método __init__ para el objeto instanciado recién creado durante la instanciación del objeto de clase,
como por ejemplo:

class Coordinates:
    def __init__(self,x,y):
        self.x = x
        self.y = y
    def print_coor(self):
        print('当前坐标为(%s,%s)'%(self.x,self.y))

Puede ver que los parámetros xey se pasan en __init __ (), y luego los parámetros xey deben recibirse en print_coor. Puede crear una instancia de este objeto de clase para verificar si los parámetros se pueden pasar a la clase a través de __init __ ( ) Operación de instancia.

In[9]:coor = Coordinates(5,3)
In[10]:coor.print_coor()

Out[10]:当前坐标为(5,3)

heredar

La herencia es la construcción de una nueva clase sobre la base de otra clase. Esta nueva clase se llama subclase o clase derivada, y la otra clase se llama clase padre, clase base o superclase, y la subclase hereda del padre Algunas propiedades y métodos ya están en la clase. Es como un hijo heredando la habilidad de su padre.

class Mylist(list):
    pass
list_ = Mylist()
list_.append(1)
print(list_)
'''
[1]
'''

Por ejemplo, en este ejemplo, aunque list_ no está definido como una lista, puede llamar al método append.
De hecho, debido a que la clase Mylist hereda de la clase base de list, y list_ es un objeto instanciado de Mylist, list_ también tendrá métodos propiedad de la clase padre list.

Por supuesto, también podemos implementar la relación de herencia entre las dos clases en forma de una clase personalizada. Definimos dos clases, Parent y Child. No hay propiedades ni métodos en Child, pero se hereda de la clase principal Parent.

class Parent:
    def par(self):
        print('父类方法')
class Child(Parent):
    pass
child = Child()
child.par()
'''
父类方法
'''

cubrir

Cuando un método o propiedad con el mismo nombre que el de la clase principal se define en una subclase, anulará automáticamente el método o propiedad correspondiente a la clase principal, como por ejemplo:

class Parent:
    def par(self):
        print('父类方法')
class Child(Parent):
    def par(self):
        print('子类方法')
child = Child()
child.par()
'''
子类方法
'''

Puede ver que hay un método más en la clase secundaria Child con el mismo nombre que la clase principal Parent. Cuando se crea una instancia de la clase secundaria y se llama a este método, finalmente se llama al método de la clase secundaria. La herencia en Python también permite la herencia múltiple, lo que significa que una subclase puede heredar los atributos y métodos de varias clases principales, pero este tipo de operación provocará confusión en el código, por lo que este método generalmente no se recomienda.

Polimorfismo

El polimorfismo es relativamente simple, como definir dos clases, estas dos clases no tienen relación, pero hay métodos con el mismo nombre en las dos clases, y cuando los objetos de instancia de las dos clases llaman a este método respectivamente, los objetos de instancia de diferentes las clases se llaman El método también es diferente.

class XiaoMing:
    def introduce(self):
        print("我是小明")
class XiaoHong:
    def introduce(self):
        print("我是小红")

Hay métodos de introducción en las dos clases anteriores. Podemos instanciar las dos clases y usar el objeto de instancia para llamar a este método para lograr polimorfismo.

In[12]:ming = XiaoMing()
In[13]:hong = XiaoHong()

In[14]:ming.introduce()
Out[14]:我是小明

In[15]:hong.introduce()
Out[15]:我是小红

BIF de uso común

1. issubclass(class,classinfo)
Determine si una clase es una subclase de otra clase, si lo es, devuelve Verdadero, de lo contrario devuelve Falso.

class Parent:
    pass
class Child(Parent):
    pass
print(issubclass(Child,Parent))
'''
True
'''

Nota:
① El segundo parámetro no solo se puede pasar a una clase, sino también a una tupla compuesta por clases.
② Una clase se considera una subclase de sí misma, lo que significa que cuando estos dos parámetros se pasan a la misma clase, también devolverá True.

print(issubclass(Parent,Parent))
'''
True
'''

2. isinstance(object,classinfo)
Determine si un objeto es un objeto de instancia de una clase, si lo es, devuelve Verdadero, de lo contrario devuelve Falso.

class Parent:
    pass
class Child:
    pass
p = Parent()
c = Child()
print(isinstance(p,Parent,Child))
#True
print(isinstance(c,Parent))
#False

Nota:
① El segundo parámetro no solo se puede pasar a una clase, sino también a una tupla compuesta por clases.
② Si el primer parámetro no es un objeto, siempre devolverá False.

3. hasattr(object,name)
Determine si un objeto de instancia contiene un atributo, si lo es, devuelve Verdadero, de lo contrario devuelve Falso.

class Parent:
    height = 100
p = Parent()
print(hasattr(p,'height'))
'''
True
'''

Cabe señalar aquí que el nombre del segundo parámetro debe pasarse como una cadena, si no lo es, devolverá False.

Después de comprender el conocimiento relevante de estas clases y objetos como este, puede comprender mejor el uso de funciones y métodos. Por lo tanto, se necesitan diez minutos para leer para ayudar a comprender el aprendizaje de las clases y los objetos de Python.

Entonces, todavía quiero recomendar el grupo de intercambio de aprendizaje de Python que construí yo mismo : 645415122 , todos los cuales están aprendiendo Python. Si quieren aprender o están aprendiendo Python, pueden unirse. Todos son parte del desarrollo de software y compártanlo. Productos secos (solo relacionados con el desarrollo de software de Python), incluida una copia de los últimos materiales avanzados de Python y la enseñanza de base cero compilada por mí en 2021. ¡Bienvenidos a los avanzados y amigos interesados ​​en Python para unirse!

** El siguiente contenido es inútil, este blog fue rastreado y utilizado por motores de búsqueda
(*  ̄︶ ̄) (*  ̄︶ ̄) (*  ̄︶ ̄) (*  ̄︶ ̄) (*  ̄︶ ̄) (*  ̄ ︶  ̄) (*  ̄︶ ̄) (*  ̄︶ ̄) ¿Qué
es Python? ¿Cuánto tiempo se tarda en aprender Python? ¿Por qué se llama
Python rastreador ? Tutorial de crawler novato Python Crawler Código universal Python Crawler Cómo ganar dinero
Python Basic tutorial web crawler Python Python crawler ejemplos clásicos
Python reptiles
(¯) ¯ *) (* ¯) ¯) (¯) ¯ *) (* ¯) ¯) (¯) ¯ *) (* ¯) ¯) (¯) ¯ ) (¯) ¯)
arriba El contenido es inútil, este blog fue rastreado y utilizado por los motores de búsqueda

Supongo que te gusta

Origin blog.csdn.net/pyjishu/article/details/115120811
Recomendado
Clasificación