继承是python的三大特性中做的最好的,菱形继承
实例:动物管理系统,有动物类,哺乳类动物,猫和鸭子,其中猫和鸭子继承上面三种,我们想要的数据库表只有猫和鸭子,这样的话数据关系就会简单,关系少性能才高,可以通过设置元信息abstract来实现,如果不加就会一个类出现一个表,其中有三个都不是我们需要的,这样性能就会大大降低
from django.db import models
class Animal(models.Model):
a_name = models.CharField(max_length=32)
class Meta:
# 抽象的模型不会在数据库中产生映射:就是如果不加abstract就会在库中生成表,而这里明显我们想要的仅仅是猫和鸭的表,
#而不想要其父类的表,所以加个abstract
abstract = True
#卵生动物
class Egg(Animal):
e_big = models.FloatField(default=10)
class Meta:
abstract = True
class Mammal(Animal):
m_duration = models.FloatField(default=1)
class Meta:
abstract = True
class Duck(Egg):
d_price = models.FloatField(default=1)
class Cat(Mammal):
c_color = models.CharField(max_length=32)
def eat(self):
return self.a_name + "吃鱼"