Python exemplo herança detalhada orientada a objectos

Este documento descreve exemplos de orientada para o objecto de classe herança Python. Compartilhar com você para sua referência, como segue:

I. Resumo
Uma das principais características da programação orientada a objetos (OOP) linguagem é "herdados". Hereditariedade refere-se a um tal capacidade: é possível utilizar todas as características de uma classe existente, e sem ter de reescrever essas funções se estendem no caso da classe original.

Criar uma nova classe de herdar processo chamado de "sub-classe" ou "classe derivada", classe hereditária chamada "classe base", "pai" ou "superclasse", herança, isto é, a partir do geral para o processo específico . Em determinadas linguagens OOP, subclasses herdam uma pluralidade de classes de base. Mas, em circunstâncias normais, uma subclasse pode ter apenas uma classe base para implementar a herança múltipla pode ser alcançado através de herança múltipla.

Implementação do conceito de herança são principalmente dois tipos: herança, herança interface.

Refere-se herança conseguida sem a utilização de adicional de codificação de propriedades capacidade e métodos da classe base.

herança interface refere-se às propriedades e métodos utilizando apenas o nome, mas a subclasse deve proporcionar a capacidade de atingir (uma subclasse da classe reconstrução método pai).

Ao considerar o uso de herança, uma coisa a notar que a relação entre as duas classes deve ser "parte de" relacionamento. Por exemplo, Empregado é uma pessoa, Manager é um ser humano, de modo que essas duas classes podem herdar a classe Pessoa. No entanto classe Leg não podem herdar a classe Person, porque a perna não é uma pessoa.

paradigma de desenvolvimento OO cerca de: divisão classe abstracta classes de → → Objeto organizados como uma estrutura hierárquica (herdada e sintetizado) Exemplo → classe com fases de concepção e de execução.

Em segundo lugar, a classe herança
definição 2.1 Inheritance

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()   # 调用本身的方法

saída:

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

2.2 herdar o construtor
se damos exemplos c participação em massa, teremos de usar o construtor, o construtor do como herdar, enquanto subclasses e como definir a sua própria propriedade?

Construtor herança de classe:

1. redação Classic:. Nome do pai init (Self, o parâmetro 1, 2 parâmetro, ...)

  1. Escrita nova classe :. Super (subclasse, Self) init (parâmetro 1, 2 parâmetro, ...)
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')

Se nós simplesmente definir uma função de construtor em uma subclasse em chinês, de fato, na reconstrução. Tal subclasse não pode herdar a propriedade da classe pai. Então, quando nós definimos herda o construtor de subclasse em primeiro lugar e, em seguida, construção, para que possamos obter as propriedades da classe pai.

construtor de subclasse com base construtor da classe pai da seguinte forma:

Exemplos de objeto c ----> c chamada subclasse __init __ () ----> subclasse __init __ () __init pai herdar __ () -----> chamar a classe pai init ()

2,3 subclasse substitui o método classe principal
, se necessário modificar a classe classe base /-mãe, que pode ser reconstituída na subclasse. Após 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()

saída:

bigberg 22 weight Chinese
bigberg is speaking chinese

, os exemplos terceiros herança de classe

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)

saída:

----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]

O conteúdo mais do que como muitos, e, finalmente, para recomendar uma boa reputação no número de instituições públicas [programadores], há um monte de veteranos habilidades de aprendizagem, experiência, habilidades de entrevista, experiência de trabalho e outros share de aprendizagem, quanto mais cuidadosamente preparado a base zero informações introdutórias sobre dados reais do projeto todos os dias para explicar o timing da tecnologia programadores Python, para compartilhar algumas das maneiras de aprender e necessidade de prestar atenção aos pequenos detalhes, para lembrar a atenção I
Aqui Insert Picture Descrição

Publicado 30 artigos originais · ganhou elogios 0 · vê 10000 +

Acho que você gosta

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