使用excel统计学生成绩让相同学生分数名次相同-英雄云拓展知识分享
134
2023-11-13
【摘要】 本书摘自《Python 编程与应用实践》一书中第6章,第4节,由冯伟森,王建,杨宁主编。
6.4.5 构造方法_ _init__() 的使用
前几节中我们已经尝试着去使用__init__ 方法,在Python 中 , init__ 方法 是一种特殊的方法,方法名的开始和结束都是双下划线,该方法称为构造方法,也叫构造 函数,用于设置属性的初始值,只要创建类的实例,构造方法就会自动执行。构造函数的 语法格式如下:
def __init__():
函数体
构造函数举例:
class Animal():
def __init__(self):
print(" 我 是 init__ 方法")
def run(self):
print("我是方法")
a=Animal()
a.run()
输出结果:
我是 init__ 方法
我是 run 方法
我们看到只要创建了Animal 类的实例对象 a, 构造方法就自动执行了。
提示: init__ 方法可有可无,但是子类一旦定义,就必须显示调用父类的 __init__ 方法,
6.5 组合
当我们定义一个类以后,并不是单一地使用它,我们还要把它创建的实例融入其他类 中,与不同数据类型的对象一起使用,不断地将它们嵌入到新的代码里面,通常情况下我 们把类当成一个模块来使用。使用组合 (composition) 或聚合 (aggregation) 就可以让 不同的类混合并加入其他类中,来增加功能和代码的复用率。用户可以在一个比较大的类 中创建一个新类的实例,实现一些其他属性和方法来对原来的类功能进行增强。用户也可 以通过派生的方法来使用类,我们将在下一节中讨论派生。举例:
class Teacher():
def __init__(self,action):
self.action=action
class Doctor():
def __init__(self,career):
self.career=career
class Worker():
def __init__(self,teacher,doctor):
self.teacher=teacher
self.doctor=doctor
def about(self):
print(teacher.action)
print(doctor.career)
teacher=Teacher( '老师给学生传授知识)
doctor=Doctor( '医生为病人看病)
worker=Worker(teacher,doctor)
worker.about()
输出结果:
老师给学生传授知识
医生为病人看病
以上代码我们首先定义了Teacher 类、Doctor 类以及 Worker 类三个类,老师和医生 也相当于工人类,只不过做的事不一样,当我们在 Worker 类中需要用到 Teacher 和 Doctor的实例对象的时候,我们其实就是直接把他们对应的对象 teacher 和 doctor 通过 Worker(teacher,doctor) 传递到Worker 类中去,我们并不需要在 Worker 类中去重新 定义 Teacher 和 Doctor 这两个类,因此 Worker 类就成了它自己和其他类的组合,这样就 节省了编码的时间和精力,而且最后的结果是易于维护的代码,这就是使用组合的优点。
6.6 子类和派生
通过6.5节的学习我们知道使用组合可以将类与类进行组合,和其他数据类型及逻辑 执行流混合使用。组合可以让那些小类成为大类更好的组成部分,但是如果我们要在相同 的类中去实现不同的功能,我们就需要用到派生。
在学习继承的时候我们有提到过子类和父类,回顾之前的代码:
class Animal(object):
def run(self):
print("animal is running…")
class Dog(Animal):
def run(slef):
print("a dog")
class Cat(Animal):
def run(slef):
print("a cat")
Animal 类就是Dog 类和Cat 类的父类,Dog 类和 Cat 类都是属于 Animal 类的子类, 子类的定义和我们的类定义语法一样,都是用关键字 class,语法为:
class 类名(父类类名1,父类类名2, … ,父类类名 n):
代码体
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们 18664393530@aliyun.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~