día20 polimorfismo y tipo de pato, método vinculante y método no vinculante

Contenido de hoy:
1. La forma correcta de abrir herencia múltiple: mecanismo mixins
2. Cómo reutilizar las funciones de la clase padre en el nuevo método derivado de la subclase
Método 1: El apellido nombrado llama a una función bajo una determinada clase = "no depende de la relación de herencia
Método 2: super () llama al método proporcionado por la clase padre para sí mismo = "estrictamente dependiente de la relación de herencia
3. polimorfismo y tipo de pato
4. método de enlace y método no vinculante
classmethod
staticmethod

5. Funciones incorporadas


mecanismo mixins
# La forma correcta de abrir la herencia múltiple: mecanismo mixins
# El núcleo del mecanismo mixins: es mejorar la legibilidad de la herencia múltiple tanto como sea posible en el contexto de la herencia múltiple
# ps: dejar que la herencia múltiple satisfaga los hábitos de pensamiento de las personas = "¿Qué es" Qué
clase de vehículo:
pase

clase FlyableMixin:
def fly (self):
pass

clase CivilAircraft (FlyableMixin, Vehicle): #
Pase de avión de aviación civil

clase Helicopter (FlyableMixin, Vehicle): #
Pase de helicóptero

clase Car (Vehículo): # coche no vuela, pero de acuerdo con la herencia anterior, el coche puede volar
pase


import socketserver
# Agregado: por lo general, la clase de resultados mixin se coloca a la izquierda


02 Cómo reutilizar las funciones de la clase padre en
los nuevos métodos derivados de la subclase # Cómo reutilizar las funciones de la clase padre en los nuevos métodos derivados de la subclase
# Método 1: Llamar a una función bajo una determinada clase por nombre => no depende de la herencia Relación
# clase OldboyPeople:
# def __init __ (self, name, age, sex): # self.name =
name
# self.age = age
# self.sex = sex
#
# def f1 (self):
# print ('% s di hola '% self.name)
#
#
# class Teacher (OldboyPeople):
# def __init __ (self, nombre, edad, sexo, nivel, salario):
# OldboyPeople .__ init __ (self, name, age, sex)
#
# self .level = nivel
# self.salary = salario
#
# tea_obj = Profesor ('egon', 18, 'hombre',
10,3000 ) # print (tea_obj .__ dict__)

# Método dos: super () llama a sí mismo el método proporcionado por la clase padre = "herencia de dependencia estricta"
# llamando a super () obtendrá un objeto especial, que se referirá al mro de la clase que inició la búsqueda de atributos e irá a la clase actual Encuentre atributos en la clase padre
# clase OldboyPeople:
# def __init __ (self, name, age, sex): # self.name =
name
# self.age = age
# self.sex = sex
#
# def f1 (self):
# print ('% s dice hola'% self.name)
#
#
# class Teacher (OldboyPeople):
# def __init __ (self, nombre, edad, sexo, nivel, salario):
# # super (Teacher, self) .__ init __ (name , age, sex)
# super () .__ init __ (name, age, sex) # Se llama al método, el objeto se pasa automáticamente en
#
# self.level = level
# self.salary = salario
#
# # print (Teacher.mro ( ))
# tea_obj = Profesor ('egon', 18, 'hombre',
10,3000 ) # print (tea_obj .__ dict__)


# super () 案例
# clase A:
# def test (self):
# print ('from A')
# super (). test ()
#
# class B:
# def test (self):
# print ('from B ')
#
# clase C (A, B):
# pass
#
#
# obj = C ()
# obj.test ()
#
# print (C.mro ())

 

clase A:
prueba de definición (auto):
print ('from A')
super (). test1 ()

clase B:
prueba de def (auto):
print ('desde B')

clase C (A, B):
def test1 (self):
print ('from C')

obj = C ()
obj.test ()

imprimir (C.mro ())

3. Polimorfismo y tipos de pato
# 1. Qué polimorfismo: hay muchas formas de la misma cosa
# clase Animal:
# pase
#
# clase Gente (Animal):
# pase
#
# clase Perro (Animal):
# pase
#
# clase Cerdo (Animal):
# pase


# 2. ¿Por qué debería haber polimorfismo = "Qué tipo de características traerá el polimorfismo, polimorfismo
# El polimorfismo se refiere al uso de objetos sin considerar el tipo específico de objetos
# clase Animal: # Unidad Métodos de todas las subclases
# def say (self):
# print ('Frecuencia de sonido básica de los animales ...', end = '')
#
# class People (Animal):
# def say (self):
# super () .say ()
# print (' 嘤 嘤 嘤 嘤 嘤 嘤 嘤 嘤')
#
# class Perro (Animal):
# def say (self):
# super (). say ()
# print ('汪汪 汪')
#
# clase de cerdo (animal):
# decir DEF (Ser):
. # super () decir ()
# de impresión ( 'hum hum')
#
#
# La gente OBJ1 = ()
# = obj2 perro ()
# = obj3 cerdo ()

#
# obj1.say ()
# obj2.say ()
# obj3.say ()

# Defina una interfaz unificada para recibir objetos animales entrantes
# def animal_say (animal):
# animal.say ()
#
# animal_say (obj1)
# animal_say (obj2)
# animal_say (obj3)


# print ('hola' .__ only __ ())
# print ([1,2,3] .__ only __ ())
# print ({'a': 1, 'b': 2} .__ only __ ())
#
# def my_len (val):
# return val .__ only __ ()

# print (my_len ('hola'))
# print (my_len ([1,2,3]))
# print (my_len ({'a': 1, 'b': 2}))

# len ('hola')
# len ([1,2,3])
# len ({'a': 1, 'b': 2})


# python 推崇 的 是 鸭子 类型
# clase Cpu:
# def read (self):
# print ('cpu read')
#
# def write (self):
# print ('cpu write')
#
# class Mem:
# def read (self):
# print ('mem read')
#
# def write (self):
# print ('mem write')
#
#
# class Txt:
# def read (self):
# print ('txt read')
#
# def write (self):
# print ('txt write')
#
#
# obj1 = Cpu ()
# obj2 = Mem ()
# obj3 = Txt ()
#
# obj1.read ()
# obj1.write ()
#
# obj2.read ()
# obj2.write ()
#
# obj3.read ()
# obj3.write ()


# Comprender:
importar abc

class Animal (metaclass = abc.ABCMeta): # Unifica el estándar de todas las subclases
@ abc.abstractmethod
def say (self):
pass

# obj = Animal () # No se puede crear una instancia de la clase abstracta en sí

clase People (Animal):
def say (self):
pass

clase Perro (Animal):
def decir (auto):
pasar

clase Pig (Animal):
def say (self):
pass

#
# obj1 = Gente ()
# obj2 = Perro ()
# obj3 = Cerdo ()

 


4. Método de enlace y método no vinculante
classmethod
staticmethod

# Uno: Método de enlace: Lo especial es que la persona que llama se pasa automáticamente como el primer parámetro
# 1. El método de enlace al objeto: la persona que llama es un objeto, y el objeto se pasa automáticamente en el
# 2, vinculando a Método de clase: clase llamante, la clase se pasa automáticamente en
# configuración de importación
#
# clase Mysql:
# def __init __ (self, ip, port):
# self.ip = ip
# self.port = port
#
# def func ( self):
# print ('% s:% s'% (self.ip, self.port))
#
# @classmethod # Decora la siguiente función como un método vinculado a la clase
# def from_conf (cls):
# print (cls)
# return cls (settings.IP, settings.PORT)
#
# # obj1 = Mysql ('1.1.1.1', 3306)
#
# obj2 = Mysql.from_conf ()
# print (obj2 .__ dict__)

# 2: Método no vinculante- "Método estático:
# No está vinculado a nadie: la persona que llama puede ser una clase o un objeto sin el efecto de pasar parámetros automáticamente

clase Mysql:
def __init __ (self, ip, port):
self.nid = self.create_id ()
self.ip = ip
self.port = port

@staticmethod # Decora la siguiente función como método estático
def create_id ():
import
uuid return uuid.uuid4 ()

@classmethod
def f1 (cls):
pasar

def f2 (self):
pasar
obj1 = Mysql ('1.1.1.1', 3306)

# print (Mysql.create_id)
# print (obj1.create_id)

# Mysql.create_id (1,2,3)
# obj1.create_id (4,5,6)

print (Mysql.create_id)
print (Mysql.f1)
print (obj1.f2)


5. Funciones incorporadas

# print (abs (-1))
# print (all ([1, 'aaa', '1']))
# print (all ([]))

# print (cualquiera ([0, Ninguno, 1]))
# print (cualquiera ([]))

# print (bin (11))
# print (oct (11))
# print (hex (11))

# print (bool (''))

# def func ():
# pass
# class Foo:
# pass
# print (invocable (Foo)) # 方

# print (chr (65))
# print (palabra ('A'))

#
不变 集集 # s = conjunto congelado ({1,2,3})

# hash (tipo inmutable)

# print (redondo (1.5))
# print (redondo (1.4))


# 10 ** 2% 3
# print (pow (10,2,3))
# s = slice (1,4,2)
# l1 = ['a', 'b', 'c', 'd', 'e']
# l2 = ['aaa', 'bbb', 'ccc', 'ddd', 444]
#
# print (l1 [1: 4: 2]) # l1 [s]
# print (l2 [1 : 4: 2]) # l2 [s]


# =================》 Maestro
# v1 = 'hola'
# v2 = [111,222,333,444,5555,6666]
# res = zip (v1, v2)
# print (list ( res))

# =================》 Master
# print (divmod (10000,33))

# =================》 Master
# class Foo:
# pass
# obj = Foo ()
# obj.xxx = 1111
# print (dir (obj)) # obj. Which Atributos

# =================》 掌握
# para i, v en enumerate (['a', 'b', 'c']):
# print (i, v)

# =================》 Maestro
# res = eval ('{"a": 1}') # ejecuta la expresión en la cadena
# print (res, type ( res))


# =================》 Master
# class Foo:
# pass
# obj = Foo ()
# print (isinstance (obj, Foo))
# print (isinstance ([], lista)) # Se recomienda juicio de tipo isinstance
# print (tipo ([]) es list) # No recomendado

# =================》 Master
# import 'time' # Error
time = __ import __ ('time')
time.sleep (3)

# La próxima semana: reflexión
# setattr
# getattr
# delattr
# hasattr

Supongo que te gusta

Origin www.cnblogs.com/python--wang/p/12676462.html
Recomendado
Clasificación