Class继承python

Class inheritance python

以创建模型为例 class学生(models.Model)
name=models.charfield(),roll=models.integerfield()

同样, 在创建表单的情况下,class newform(forms.Form) name=forms.charfield(),roll=forms.integerfield()

同样, 在创建序列化程序的情况下,class serial(serializers.Serializer) name=serializers.charfield(),roll=serializers.integerfield()

我知道在每个 classes 中,继承了一个基础 class 但我很困惑,如果在 class 中创建不同 classes 的不同对象] 在每种情况下,继承 models.model、forms.Form、serializers.Serializer 的含义是什么?这些继承的 class 是做什么的?

通过继承其他 类,您可以访问他们的方法;

Class A(object): 
    def _print(self): 
        print('Class A') 

Class B(A): 
    def other_print(self): 
        print('Class B')

if __name__ == "__main__":
    a, b = A(), B() 

    a._print()

    b._print()
    b.other_print()

当从模型、表单等继承时...您从一个已经集成在框架中的对象继承,因此具有与框架一起工作的特定方法。例如模型将被注册到数据库,表单 'knows' 如何正确渲染等等...

当您继承这些 类 时,您已经拥有一个包含所有这些方法的预构建对象。

Django 使用继承和对象组合,这些都是 OOP 技术以实现可重用性。

让我们以您的第一个 class 为例(为简单起见,我只保留了一个字段):

Student(models.Model):
   name = models.CharField(max_length=100)

Inheritance:

第一行 Student(model.Model): 通过从 Model class 继承来实现继承,您可以使用它来获得 save()delete()、[=15 等方法=] e.t.c。现在您的 Student class 可以重复使用这些方法。

Composition

第二行 name = models.CharField(max_length=100) 通过创建对象即 class CharFieldname 来进行对象组合,使用它可以得到 checkget_internal_type e.t.c.

所有这些内置 classes (Model, CharField e.t.c) 都在文件中定义,即 models.py 所以当你做 models.Model 你从文件 models.py 得到 Model class 而 models.CharField 从同一个文件得到 CharField class。