Maison  >  Article  >  développement back-end  >  Une explication détaillée explique en détail l'héritage des classes Python

Une explication détaillée explique en détail l'héritage des classes Python

迷茫
迷茫original
2017-03-25 17:50:181645parcourir

Héritage des classes Python (Avancé 5)

1. Qu'est-ce que l'héritage en python

Qu'est-ce que l'héritage en python :

  • Nouvelles classes n'ont pas besoin d'être écrit à partir de zéro

  • La nouvelle classe hérite de la classe existante et possède automatiquement toutes les fonctions de la classe existante

  • La nouvelle classe seulement Besoin d'écrire de nouvelles fonctions qui manquent aux classes existantes >

    Posséder automatiquement toutes les fonctions des classes existantes

Il suffit d'écrire les nouvelles fonctions manquantes
  • Fonctionnalités héritées :
  • La sous-classe et la classe parent sont dans une relation is
  • Caractéristiques de l'héritage python :

commence toujours par Lorsqu'une classe hérite de
  • n'oubliez pas d'appeler super().
  • init

  • 2. Hériter d'une classe en python

  • 3 Déterminer le type en python
  • La fonction isinstance() peut déterminer le type d'un. variable. Elle peut être utilisée dans les types de données intégrés de Python tels que str, list et dict, ainsi que dans nos classes personnalisées, ce sont essentiellement des types de données.

    4. Polymorphisme en python

5. Héritage multiple en python

class Person(object):
    def init(self, name, gender):
        self.name = name
        self.gender = gender
class Teacher(Person):
    def init(self, name, gender, course):
        super(Teacher, self).init(name, gender)
        self.course = course

t = Teacher('Alice', 'Female', 'English')
print t.name
print t.course
En plus d'hériter d'une classe parent, Python permet d'hériter de plusieurs parents. L'héritage de classe est appelé héritage multiple. Java ne peut pas avoir d'héritage multiple

6. Obtention d'informations sur les objets en python

class Person(object):
    def init(self, name, gender):
        self.name = name
        self.gender = gender

class Student(Person):
    def init(self, name, gender, score):
        super(Student, self).init(name, gender)
        self.score = score

class Teacher(Person):
    def init(self, name, gender, course):
        super(Teacher, self).init(name, gender)
        self.course = course

t = Teacher('Alice', 'Female', 'English')

print isinstance(t, Person)
print isinstance(t, Student)
print isinstance(t, Teacher)
print isinstance(t, object)
En plus d'utiliser isinstance() pour déterminer s'il s'agit d'une instance d'un certain type, existe-t-il une autre instance comment l'obtenir ? Et si vous aviez plus d'informations ?

Tout d'abord, vous pouvez utiliser la fonction type() pour obtenir le type de la variable, qui renvoie un objet Type
class Person(object):
    def init(self, name, gender):
        self.name = name
        self.gender = gender
    def whoAmI(self):
        return 'I am a Person, my name is %s' % self.name

class Student(Person):
    def init(self, name, gender, score):
        super(Student, self).init(name, gender)
        self.score = score
    def whoAmI(self):
        return 'I am a Student, my name is %s' % self.name

class Teacher(Person):
    def init(self, name, gender, course):
        super(Teacher, self).init(name, gender)
        self.course = course
    def whoAmI(self):
        return 'I am a Teacher, my name is %s' % self.name
        
        
import json

class Students(object):
    def read(self):
        return r'["Tim", "Bob", "Alice"]'

s = Students()

print json.load(s)

fonction dir() pour obtenir tous les attributs de la variable

dir() a renvoyé les attributs C'est une liste de chaînes si un nom d'attribut est connu, pour obtenir ou définir les attributs de l'objet, vous devez utiliser les fonctions getattr() et setattr()

class A(object):
    def init(self, a):
        print 'init A...'
        self.a = a

class B(A):
    def init(self, a):
        super(B, self).init(a)
        print 'init B...'

class C(A):
    def init(self, a):
        super(C, self).init(a)
        print 'init C...'

class D(B, C):
    def init(self, a):
        super(D, self).init(a)
        print 'init D...'
        
        
class Person(object):
    pass

class Student(Person):
    pass

class Teacher(Person):
    pass

class SkillMixin(object):
    pass

class BasketballMixin(SkillMixin):
    def skill(self):
        return 'basketball'

class FootballMixin(SkillMixin):
    def skill(self):
        return 'football'

class BStudent(BasketballMixin):
    pass

class FTeacher(FootballMixin):
    pass

s = BStudent()
print s.skill()

t = FTeacher()
print t.skill()

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn