目录:
视频: 02 创建模型类 2024
正如您可能想象的那样,使用Python创建功能齐全的 生产级类 (在现实世界中使用的类应用程序实际运行在用户访问的系统上)是非常耗时的,因为真正的类执行很多任务。幸运的是,Python支持一个名为 继承的特性。 通过使用继承,您可以在创建子类时从父类获取所需的功能。
<! - 1 - >覆盖不需要的功能,添加新的功能可以让你创建新的类,速度相对较快,而且不需要太多的工作。另外,因为父代码已经被测试过了,所以你不需要付出相当大的努力来确保你的新类能按预期工作。
构建子类
父类通常是超类的东西。例如,您可以创建一个名为Car的父类,然后在其周围创建各种类型的汽车的子类。
<! - 2 - >在这种情况下,你建立一个名为Animal的父类,并使用它来定义一个名为Chicken的子类。当然,在有了动物之后,你可以很容易地添加其他的孩子班级,比如大猩猩班级。但是,对于这个例子,你只需构建一个父类和一个子类。
class Animal:def __init __(self,Name =“,Age = 0,Type =”):self。姓名=姓名自我。年龄=年龄自我。 Type = Type def GetName(self):return self。名称def SetName(self,Name):self。 Name = Name def GetAge(self):return self。年龄def SetAge(self,年龄):自我。年龄=年龄def GetType(self):返回自我。键入def SetType(self,Type):self。 Type = Type def __str __(self):return“{0}是一个年龄的{2}”。格式(self.name,self.type,self.agency)class Chicken(Animal):def __init __(self,Name =“,Age = 0):self.name = Name self。Age = Age self。Type =”Chicken (自我,类型):打印(“对不起,{0}将永远是一个”格式(self.name,self.type))def MakeSound(self):print(“{0} says Cluck,Cluck,Cluck!“格式(self.name))
动物类跟踪三个特征:名称,年龄和类型生产应用程序可能追踪更多特征,但是这些特征完成这个例子。该代码还包括每个特征所需的访问器。__str __()方法通过打印一个简单的消息来说明动物特征,从而完成了图片。
<! - 3 - >从动物类中注意到。在鸡类名称后面注意使用括号中的动物。这个补充告诉Python,鸡是一种动物,它会继承动物的特征。请注意,鸡构造函数只接受名称和年龄。用户不必提供Type值,因为您已经知道这是一只鸡。这个新的构造函数覆盖了Animal构造函数。这三个属性仍然存在,但Type是直接在Chicken构造函数中提供的。有人可能会尝试一些有趣的事情,比如把她的鸡当成大猩猩。考虑到这一点,Chicken类也会覆盖SetType()设置器。如果有人试图改变鸡的类型,该用户得到的消息,而不是企图改变。通常情况下,通过使用异常来处理这类问题,但是通过使编码技术更清晰,消息对于这个例子更好。最后,Chicken类添加了一个新功能MakeSound()。每当有人想听到一只鸡的声音时,他可以调用MakeSound()至少看到它在屏幕上打印出来。
在应用程序中测试类
测试Chicken类也在某种程度上测试Animal类。有些功能是不同的,但有些类不是真正意义上的使用。动物类只是特定种类的动物(如鸡)的父母。以下步骤演示了Chicken类,以便您可以看到继承是如何工作的。
打开一个Python文件窗口。
您会看到一个编辑器,您可以在其中键入示例代码。
在窗口中输入以下代码 - 在每行之后按Enter:
-
import Animals MyChicken = Animals。鸡(“莎莉”,2)打印(MyChicken)MyChicken。 SetAge(MyChicken.GetAge()+ 1)打印(MyChicken)MyChicken。 SetType(“大猩猩”)打印(MyChicken)MyChicken。 MakeSound()
第一步是导入Animals模块。记住,你总是导入文件名,而不是类。动物们。在这种情况下,py文件实际上包含两个类:Animal和Chicken。
-
这个例子创建了一个名为Sally的鸡MyChicken,他是2岁。然后开始以各种方式与MyChicken合作。例如,Sally有一个生日,所以代码将Sally的年龄更新为1.请注意代码如何将setter()与getter(GetAge())结合使用来执行任务。每次更改后,代码将为您显示生成的对象值。最后一步是让莎莉说几句话。
选择运行→运行模块。
您会看到用于MyChicken的每个步骤。正如你所看到的,当足够多的类具有共同性时,使用继承可以极大地简化创建新类的任务,以便可以创建包含一定量代码的父类。