Python instancia de objeto orientado herencia detallada

Este documento describe ejemplos de la clase de herencia orientada a objetos Python. Compartir con usted para su referencia, de la siguiente manera:

I. Visión general
Una de las principales características de la programación orientada a objetos (POO) es el lenguaje "heredó". Inheritance se refiere a la capacidad de tal una: se puede utilizar todas las características de una clase existente, y sin tener que volver a escribir estas funciones se extienden el caso de la clase original.

Crear una nueva clase de proceso de heredar llamado "sub-clase" o "clase derivada", clase hereditaria llamada "clase base", "padre" o "superclase", la herencia, es decir, de lo general a lo proceso particular . En ciertos lenguajes de POO, subclases heredan una pluralidad de clases base. Sin embargo, en circunstancias normales, una subclase puede tener sólo una clase base para implementar la herencia múltiple que puede lograrse a través de la herencia múltiple.

Aplicación del concepto de la herencia son principalmente dos tipos: la herencia, la herencia de interfaces.

Inheritance refiere lograrse sin el uso de adicional de codificación de propiedades y métodos de la clase base de capacidad.

herencia interfaz se refiere a las propiedades y métodos que utilizan sólo el nombre, pero la subclase debe proporcionar la capacidad de lograr (una subclase de método de reconstrucción padre clase).

Cuando se considera el uso de la herencia, una cosa a tener en cuenta que la relación entre las dos clases debe ser "parte de" relación. Por ejemplo, los empleados es una persona, Manager es un ser humano, por lo que estas dos clases pueden heredar la clase Persona. Sin embargo clase pierna no puede heredar la clase persona, debido a que la pierna no es una persona.

paradigma de desarrollo OO más o menos: división clase abstracta clases → → objetos organizados como una estructura jerárquica (heredados y sintetizados) Ejemplo → clase con etapas de diseño y ejecución.

En segundo lugar, la clase de herencia
definición 2.1 Herencia

class Person(object):  # 定义一个父类
  def talk(self):  # 父类中的方法
    print("person is talking....")
class Chinese(Person):  # 定义一个子类, 继承Person类
  def walk(self):   # 在子类中定义其自身的方法
    print('is walking...')
c = Chinese()
c.talk()   # 调用继承的Person类的方法
c.walk()   # 调用本身的方法

salida:

person is talking....
is walking...

2.2 hereda el constructor
si damos ejemplos c participación de las masas, tendremos que utilizar el constructor, el constructor de la forma de heredar, mientras subclases y cómo definen su propiedad?

Constructor de la herencia de clases:

1. texto clásico:. Nombre del padre El init (Ser, el parámetro 1, parámetro 2, ...)

  1. Escribiendo nueva clase :. Súper (subclase, Ser) el init (parámetro 1, parámetro 2, ...)
class Person(object):
  def __init__(self, name, age):
    self.name = name
    self.age = age
    self.weight = 'weight'
  def talk(self):
    print("person is talking....")
class Chinese(Person):
  def __init__(self, name, age, language): # 先继承,在重构
    Person.__init__(self, name, age) #继承父类的构造方法,也可以写成:super(Chinese,self).__init__(name,age)
    self.language = language  # 定义类的本身属性
  def walk(self):
    print('is walking...')
class American(Person):
  pass
c = Chinese('bigberg', 22, 'Chinese')

Si nos limitamos a definir una función constructora de una subclase en chino, de hecho, en la reconstrucción. Tal subclase no puede heredar la propiedad de la clase padre. Así que cuando definimos el constructor de la subclase hereda primero y luego la construcción, por lo que podemos obtener las propiedades de la clase padre.

Constructor de la subclase constructor de la clase padre a base de la siguiente manera:

Ejemplos de objetos c ----> c llamada subclase __init __ () ----> subclase __init __ () __init padres heredan __ () -----> llamar a la clase madre del init ()

2.3 subclase reemplaza el método de la clase padre
, si tenemos que modificar la clase clase base / padre, que puede ser reconstruido en la subclase. Siguiendo Talk método ()

class Person(object):
  def __init__(self, name, age):
    self.name = name
    self.age = age
    self.weight = 'weight'
  def talk(self):
    print("person is talking....")
class Chinese(Person):
  def __init__(self, name, age, language):
    Person.__init__(self, name, age)
    self.language = language
    print(self.name, self.age, self.weight, self.language)
  def talk(self): # 子类 重构方法
    print('%s is speaking chinese' % self.name)
  def walk(self):
    print('is walking...')
c = Chinese('bigberg', 22, 'Chinese')
c.talk()

salida:

bigberg 22 weight Chinese
bigberg is speaking chinese

En tercer lugar, los ejemplos de herencia de clases

class SchoolMember(object):
  '''学习成员基类'''
  member = 0
  def __init__(self, name, age, sex):
    self.name = name
    self.age = age
    self.sex = sex
    self.enroll()
  def enroll(self):
    '注册'
    print('just enrolled a new school member [%s].' % self.name)
    SchoolMember.member += 1
  def tell(self):
    print('----%s----' % self.name)
    for k, v in self.__dict__.items():
      print(k, v)
    print('----end-----')
  def __del__(self):
    print('开除了[%s]' % self.name)
    SchoolMember.member -= 1
class Teacher(SchoolMember):
  '教师'
  def __init__(self, name, age, sex, salary, course):
    SchoolMember.__init__(self, name, age, sex)
    self.salary = salary
    self.course = course
  def teaching(self):
    print('Teacher [%s] is teaching [%s]' % (self.name, self.course))
class Student(SchoolMember):
  '学生'
  def __init__(self, name, age, sex, course, tuition):
    SchoolMember.__init__(self, name, age, sex)
    self.course = course
    self.tuition = tuition
    self.amount = 0
  def pay_tuition(self, amount):
    print('student [%s] has just paied [%s]' % (self.name, amount))
    self.amount += amount
t1 = Teacher('Wusir', 28, 'M', 3000, 'python')
t1.tell()
s1 = Student('haitao', 38, 'M', 'python', 30000)
s1.tell()
s2 = Student('lichuang', 12, 'M', 'python', 11000)
print(SchoolMember.member)
del s2
print(SchoolMember.member)

salida:

----end-----
just enrolled a new school member [haitao].
----haitao----
age 38
sex M
name haitao
amount 0
course python
tuition 30000
----end-----
just enrolled a new school member [lichuang].
3
开除了[lichuang]
2
开除了[Wusir]
开除了[haitao]

El contenido de más de cuántos, y finalmente a recomendar una buena reputación en el número de instituciones públicas [programadores], hay una gran cantidad de veteranos habilidades de aprendizaje, experiencia, habilidades de la entrevista, la experiencia laboral y otra cuota de aprendizaje, cuanto más cuidadosamente preparado el basado en cero información introductoria sobre los datos reales del proyecto todos los días para explicar el calendario de la tecnología de los programadores de Python, para compartir algunas de las formas de aprender y necesidad de prestar atención a los pequeños detalles, para recordar la atención que
Aquí Insertar imagen Descripción

Publicado 30 artículos originales · ganado elogios 0 · Vistas a 10000 +

Supongo que te gusta

Origin blog.csdn.net/chengxun02/article/details/105016995
Recomendado
Clasificación