Tres características de la programación orientada a objetos de Python

Objetos y clases
Clase: Es el reflejo de las entidades en el mundo real o pensante en la computadora. Encapsula datos y operaciones sobre estos datos.
Objetos: Variables con tipos. Clases y objetos orientados El concepto básico en la tecnología de programación de objetos. Una
clase es una plantilla para crear una instancia. Un
objeto es una instancia específica.
Por ejemplo:
Inserte la descripción de la imagen aquí
Ejecutar:
Inserte la descripción de la imagen aquí
Encapsulación
. Las tres características orientadas a objetos son: encapsulación, herencia y
encapsulación polimórfica . Como su nombre lo indica, el contenido está encapsulado. Vaya a un lugar determinado y luego llame al contenido
que está encapsulado en algún lugar. Por lo tanto, cuando utilice la función de encapsulación orientada a objetos, debe:
1: encapsular el contenido en algún lugar
2: llamar al contenido encapsulado por la llamada de objeto encapsular el contenido
por la llamada de objeto Contenido: objeto. Nombre del atributo
Llamar indirectamente al contenido encapsulado a
través de self : self. Nombre del atributo Explicar el contenido encapsulado a través de self: self.
Característica de encapsulación del nombre del método Para la encapsulación orientada a objetos, en realidad es el uso de métodos de construcción para encapsular el contenido Vaya al objeto y luego obtenga el contenido encapsulado directa o indirectamente a través del objeto.
Practique la
creación de una clase Personas con atributos como nombre, género y edad, y los métodos a tener son comprar, jugar, aprender, instanciar el objeto y ejecutar el método correspondiente. , Se muestra de la siguiente manera:
Xiao Ming, 18 años, hombre, ir de compras a Xi’an SEG Shopping Plaza
Xiao Wang, 22 años, hombre, ir de compras a Xi’an SEG Shopping Plaza
Xiao Hong, 10 años, mujer, estudiar en Western Open Source
1

class people:
    def _ _init_ _(self,name,age,sex):
        self.name = name
        self.age = age
        self.sex = sex
    def eating(self):
        print('%s,%s岁,%s去西安赛格购物广场购物' %(self.name,self.age,self.sex))
    def learing(self):
        print('%s,%s岁,%s去西安赛格购物广场购物' %(self.name,self.age,self.sex))
    def shoppinh(self):
        print('%s,%s岁,%s在西部开源学习'%(self.name,self.age,self.sex))
p1 = people('小明',18,'男')
p1.eating()
p2 = people('小王',22,'男')
p2.learing()
p3 = people('小红',10,'女')
p3.shoppinh()

Resultado de la ejecución:
Inserte la descripción de la imagen aquí
características de herencia La
herencia describe la relación de pertenencia entre cosas. Cuando definimos una clase, podemos heredar de una clase existente. La nueva clase se llama subclase y la clase extendida se llama clase heredada. Como clase padre, la clase base
Pregunta 1
¿Cómo implementar la herencia?
Cuando una subclase hereda, el nombre de la clase padre está entre paréntesis al definir la clase
Pregunta 2
¿Cuál es el mecanismo de funcionamiento de la herencia?
Las propiedades y métodos de la clase principal se heredarán a la clase secundaria.
Reemplazando el método de la clase padre
en la clase hija, si hay un método que es la misma que la clase padre, prevalecerá sobre el método de la clase padre.
Instancia:

class Student(object):
    def __init__(self,name,age):
        print('这是父类的构造方法...')
        self.name = name
        self.age = age
    def learning(self):
        print('正在执行父类的learning方法....')
        print('学生%s正在学习....' %(self.name))
        print(self.age)
class MathStudent(Student):
    def learning(self):
        print('正在执行子类的learning方法...')
        print('数学系学生%s正在学习' %(self.name))
        print(self.age)
m = MathStudent('杨进',19)
print('学生姓名:', m.name)
print('学生年龄:', m.age)
m.learning()

resultado de la operación:
Inserte la descripción de la imagen aquí

Propiedades privadas y métodos privados

De forma predeterminada, los atributos son "públicos" en Python. La mayoría de los lenguajes OO proporcionan "símbolos de control de acceso" para limitar el acceso a las funciones miembro.
En Python, si el nombre de la variable de una instancia comienza con __, se convierte en una variable privada / Atributos. Si el nombre de la función de la instancia comienza con __, se convierte en una función / método privado, al que solo se puede acceder internamente, pero no externamente.

Ventajas de las propiedades privadas y los métodos privados.

Asegura que el código externo no pueda modificar el estado interno del objeto a voluntad, de modo que el código sea más robusto a través de la protección de restricciones de acceso
¿Qué sucede si desea permitir que el código externo modifique las propiedades?
Puede agregar métodos para establecer propiedades específicas para la clase.

Polimorfismo

Polimorfismo significa literalmente estados múltiples. En un lenguaje orientado a objetos, múltiples implementaciones diferentes de una interfaz son polimorfismo. En términos simples: la misma operación actúa sobre diferentes objetos y puede tener diferentes interpretaciones. Producir diferentes resultados de ejecución

Ventajas del polimorfismo

La ventaja del polimorfismo es que cuando necesitamos pasar más subclases, solo necesitamos heredar la clase principal, y el método puede no reescribirse directamente o puede reescribir uno único. Este es el significado del polimorfismo, el llamador Llamando independientemente de los detalles, y cuando agregamos una nueva subclase, siempre que nos aseguremos de que el método esté escrito correctamente independientemente del código original, este es el famoso principio de apertura y cierre:
abrir a la extensión: permitir que las subclases anulen la función del método y
cerrar la modificación: no Anular, heredar directamente la función del método de la clase principal

Encapsulación de pila y cola

Apilar

La pila es una tabla lineal que está restringida para insertar y eliminar operaciones en un extremo. Comúnmente se llama pila. El extremo que permite operaciones se llama la parte superior de la pila y el otro extremo se llama parte inferior de la pila. Cuando no hay elementos en la pila, se llama pila vacía. Insertar elementos en la pila. Se llama empujar hacia la pila, y eliminar elementos de la pila se llama estallar. Las características de la pila: último en entrar, primero en salir

Ejercicio

Encapsulación de pila

class stack(object):
    def __init__(self):
        self.stack = []
    def push(self,value):
        self.stack.append(value)
        print('元素%s入栈成功' %(value))
    def pop(self):
        if not self.is_empty():
            a = self.stack.pop(-1)
            print('%s出栈成功'%(a))
        else:
            raise Exception('栈为空')
    def top(self):
        if not self.is_empty():
            return self.stack[-1]
        else:
            raise Exception('栈为空,不能获取栈顶元素')
    def is_empty(self):
        return len(self.stack) == 0
    def __len__(self):
        return len(self.stack)
    def list(self):
        print(self.stack)
if __name__ == '__main__':
    s = stack()
    s.push(5)
    s.push(3)
    print(len(s))
    s.pop()
    print(s.is_empty())
    s.list()

resultado de la operación:
Inserte la descripción de la imagen aquí

cola

Una cola es una tabla lineal que está restringida para insertar operaciones en un extremo y eliminar operaciones en el otro extremo. El extremo que permite la inserción se denomina final de la cola y el final que permite la eliminación se denomina cabecera de la cola. Cuando no hay elementos en la cola, se denomina par vacío. Características de la cola: hacia atrás Retirarse

Ejercicio

Encapsulación de cola

class List(object):
    def __init__(self):
        self.list = []
    def enqueue(self,value):
        self.list.append(value)
        print('%s成功进入队列' %(value))
    def dequeue(self):
        if not self.is_empty():
            b = self.list.pop(0)
            print('%s元素删除成功' %(b))
        else:
            raise Exception('队列为空')
    def is_empty(self):
        return len(self.list) == 0
    def first(self):
        if not self.is_empty():
            print(self.list[0])
        else:
            raise Exception('队列为空,无法获取第一个元素')
    def num(self):
        print(len(self.list))
    def ls(self):
        print(self.list)
if __name__ == '__main__':
    l = List()
    l.enqueue(5)
    l.enqueue(3)
    print(l.is_empty())
    l.first()
    l.num()
    l.dequeue()
    l.ls()

Inserte la descripción de la imagen aquí

Ejercicio

Algoritmo de búsqueda binaria La búsqueda
binaria también se llama búsqueda binaria,

La ventaja es que el número de comparaciones es pequeño, la velocidad de búsqueda es rápida y el rendimiento promedio es bueno; la desventaja es que la tabla a buscar debe ser una lista ordenada, y la inserción y eliminación son difíciles.

Por lo tanto, el método de búsqueda binaria es adecuado para buscar listas ordenadas con frecuencia que no cambian con frecuencia.

En primer lugar, suponga que los elementos de la tabla están dispuestos en orden ascendente. Compare la clave en la posición central de la tabla con la clave de búsqueda. Si las dos son iguales, la búsqueda es exitosa; de lo contrario, use el registro de la posición intermedia para dividir la tabla en dos subtablas. La clave del registro de posición intermedia es mayor que la clave de búsqueda, luego se busca más en la subtabla anterior, de lo contrario se busca más en la última subtabla. Repita el proceso anterior hasta que se encuentre un registro que cumpla con las condiciones y la búsqueda sea exitosa, o hasta que la subtabla no exista, la búsqueda no sea exitosa en este momento.

def binary_search(alist, item):
    n = len(alist)
    start = 0
    end = n - 1
    while start <= end:
        mid = (start + end) // 2
        if alist[mid] == item:
            return True
        elif item < alist[mid]:
            end = mid - 1
        else:
            start = mid + 1
    return False
if __name__ == '__main__':
    li = [1,2,3,4,5]
    print(binary_search(li, 1))
    print(binary_search(li, 20))

resultado de la operación:
Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/qq_42958401/article/details/109068159
Recomendado
Clasificación