`
sanatay
  • 浏览: 1351 次
社区版块
存档分类
最新评论

python每日学习 2

 
阅读更多

继承

Python也是面向对象的语言。

面向对象的一个特点是对代码重用,重用的一种实现方法就是通过继承机制。与java中概念相似,有父类型与子类型的概念。
现在书中的例子:
学校中有两种类型的人:老师、学生。

他们有一些共同的特征:姓名、年龄、地址

老师还有一些特有的特征:薪水,课程,假期;学生的特有特征:成绩、学费
当然,可以分别写两个类:老师的类,学生的类。

但如果又要增加一个特征,比如:性别,这样需要在老师的类中加上这个属性,也需要在学生的类中加上这个属性。这样就比较繁琐。
有没有办法优化呢?
可以把老师、学生的共同特征,提取出来,新建一个类,SchoolMember。这个类中放的是学校成员共同的一些特征:姓名、年龄、地址、性别等

再新建老师的类:Teacher,

学生的类:Student,分别继承SchoolMember这个类,同时也加上各自的属性。

基类代码SchoolMember如下:

class SchoolMember:
    # 代表任何学校里的成员
    def __init__(self, name, age):
        self.name = name
        self.age = age
        print 'Initialized SchoolMember:{}'.format(self.name)

    def tell(self):
        print 'Name:"{}" Age:"{}"'.format(self.name, self.age)

 教师类Teacher代码如下:

class Teacher(SchoolMember):
    # 代表一位老师
    def __init__(self, name, age, salary):
        SchoolMember.__init__(self, name, age)
        self.salary = salary
        print 'Initialized Teacher:{}'.format(self.name)

    def tell(self):
        SchoolMember.tell(self)
        print 'Salary: "{:d}"'.format(self.salary)

 学生类Student代码如下:

class Student(SchoolMember):
    def __init__(self, name, age, marks):
        SchoolMember.__init__(self, name, age)
        self.marks = marks
        print 'Initialized Student: {}'.format(self.name)

    def tell(self):
        SchoolMember.tell(self)
        print 'Marks: "{:d}"'.format(self.marks)

 调用的代码如下:

t = Teacher('Mrs. Shriviya', 40, 3000)
s = Student('Swaroop', 25, 75)
print ''

members = [t, s]
for member in members:
    member.tell()

 运行后结果如下:

---------------------------------------------------------------

Initialized SchoolMember:Mrs. Shriviya
Initialized Teacher:Mrs. Shriviya
Initialized SchoolMember:Swaroop
Initialized Student: Swaroop

Name:"Mrs. Shriviya" Age:"40"
Salary: "3000"
Name:"Swaroop" Age:"25"
Marks: "75"

 

---------------------------------------------------------------

注意:

java和python中继承的区别

javaa.class继承了b.class,那么在子类a的构造函数中,无论什么情况,都会自动的调用父类b的构造函数

python的子类,如果子类,如Teacher类,已经写了构造函数__init__(),则需要显示的调用父类的构造函数__init__(self),否则不会调用。

如果子类,Teacher类,并没有再定义构造函数__init__()那么会默认的调用父类的构造函数

多重继承:如果类定义的时候,

class Teacher(class1,class2...),写了多个继承元组,这种就是多重继承。

分享到:
评论

相关推荐

    Python-成为一个Google软件工程师的一份完整的每日学习计划

    这份每日学习计划将帮助你系统地掌握Python编程,为进入顶级科技公司奠定坚实基础。以下是你需要关注的关键知识点: 1. **Python基础知识**: - **语法与数据类型**:学习Python的基本语法,包括变量、数据类型...

    Python机器学习项目开发实战案例研究_预测雅虎的每日调整的收盘价_案例解析实例详解课程教程.pdf

    Python机器学习项目开发实战案例研究_预测雅虎的每日调整的收盘价_案例解析实例详解课程教程.pdf

    python每日作业.zip

    "Python每日作业"这个标题暗示了这可能是一个学习资源包,包含了用于日常练习或教学的Python代码示例。文件列表中的"zgl_resource"可能是资源文件夹或者一个特定的Python文件,里面可能包含了各种函数、类或者问题...

    财务数据机器学习案例_财务_python预测_python_sequencial_

    这些库使得Python成为数据科学和机器学习的理想选择。 在"sequencial"这个标签中,我们可以理解为涉及到了序列数据的处理。序列数据通常表现为时间序列,其中每个观测值都有一个特定的时间戳。在财务数据中,如每日...

    python每日早安程序源码

    Python是一种广泛使用的高级编程语言,...总之,Python的"每日早安"程序可以通过结合基础编程概念、时间日期操作、定时任务和外部服务交互来实现。通过不断学习和实践,你可以创建出更加复杂和个性化的自动问候程序。

    Python-百日机器学习编程计划

    "Python-百日机器学习编程计划"是一个针对初学者到进阶者的系统性学习路径,旨在通过100天的持续实践,帮助学习者掌握Python编程基础以及机器学习的核心概念和算法。在这个计划中,你将逐步深入到数据预处理、模型...

    Python统计机器学习每日作业.zip

    Python统计机器学习每日作业

    Python每日一题.pdf

    Python每日一题.pdf 本资源摘要信息涵盖了Python编程语言的各种知识点,涉及到图像处理、数据处理、文件操作、数据库交互、爬虫、数据分析、XML和Excel文件操作等多个方面。 1. 图像处理:题目0000和0010涵盖了...

    python每天定时执行任务

    在Python编程语言中,定时执行任务是一项常见的需求,例如自动备份数据、监控系统状态或运行数据分析等。Python提供了多种方式来实现定时任务...在开发过程中,可以参考提供的视频教程(BV1tR4y1W7ec)进行学习和实践。

    python相关学习文档.zip

    此外,学习计划可能会规划每日或每周的学习目标,帮助学习者有序地掌握Python知识。 "python_work"可能是一个文件夹,包含各种Python练习项目,让学习者有机会将所学理论应用于实际编程。这些项目可能涉及文本处理...

    基于Python强化学习PPO算法在中国A股市场的应用(构建投资组合)

    每日调仓是强化学习策略的关键部分,智能体会根据当前市场状态和学习到的策略,决定买入、持有或卖出哪些股票,以期望获得最大的长期回报。 构建投资组合是投资策略的核心,它涉及到资金分配、风险控制和收益最大化...

    python基础学习资料+配套题目+答案详解

    python基础学习资料,包含每日的题目以及答案。学习资料简介: Python开发环境搭建,Python语法规则,学生管理系统。 目录:1.计算机组成原理和Python基础语法知识;2.判断语句和循环语句;3.容器:字符串、列表、...

    python学习:Python汇总各单位Excel档领料记录并加总每日领用次数.zip

    Python学习:实战代码Demo案例集 解锁Python编程新境界,从实战出发,直击技术核心。本资源精心汇集了一系列Python实战代码Demo案例,不仅涵盖基础语法到高级特性的全面应用,更深度融合前端HTML技术,展现Web开发...

    Python 100道经典练习题 .zip

    2. **列表、元组与字典**:Python的列表(list)是动态数组,元组(tuple)是不可变序列,字典(dict)则是键值对的集合。学习者需要掌握它们的创建、访问、修改、删除等操作,以及切片、遍历、排序等技巧。 3. **...

    Python-利用墨墨背单词的分享功能拿每日20个的单词上限奖励多线程

    标题中的“Python-利用墨墨背单词的分享功能拿每日20个的单词上限奖励多线程”揭示了本主题的核心:使用Python编程语言来自动化完成墨墨背单词应用的每日分享任务,以获取额外的单词学习额度。这涉及到Python在实际...

    02月03日 Python每日一题.mp42020年蓝桥杯培训教程

    02月03日 Python每日一题.mp42020年蓝桥杯培训教程,每日一练,备赛冲刺必备;适合蓝桥杯备赛学生和入门学习python的人群,适合做教学案例,适合自媒体教程。

    基于Python实现的每日发送测试人员缺陷情况到飞书群的机器人源码+使用说明.zip

    【资源说明】基于Python实现的每日发送测试人员缺陷情况到飞书群的机器人源码+使用说明.zip# 环境要求|环境|版本||-|-||python|3.7.4||pip|22.0.4| 更新pip```pythonpip install --upgrade pip``` 创建虚拟目录```...

Global site tag (gtag.js) - Google Analytics