继承,继承其它实例化样本的属性和方法,需要在声明里重新定义和使用

class School(object):
def __init__(self, name, addr):
self.name = name
self.addr = addr
self.student = [] # 用于进行学生类的存储
self.teacher = [] # 用于进行老师类的存储
def enroll(self, stu_obj):
print('招录进来学生%s'%stu_obj.name)
self.student.append(stu_obj) # 将学生类进行添加
def hire(self, staff_obj):
print('招募老师%s'%staff_obj.name)
self.teacher.append(staff_obj) # 将老师类进行添加 class Schoolmember(object): # 创建学校成员的父类
def __init__(self, name, age, sex): # 定义初始变量
self.name = name # 定义名字
self.age = age # 定义年龄
self.sex = sex # 定义性别
def teach(self): # 定义父类属性
pass class Teacher(Schoolmember): # 定义老师属性,继承父类
def __init__(self, name, age, sex, salary, course): # 变量声明
super(Teacher, self).__init__(name, age, sex) # 变量继承
self.salary = salary
self.course = course
def tell(self):
print('''
---info---%s
name %s
age %s
sex %s
salary %s
course %s
'''%(self.name, self.name, self.age, self.sex, self.salary, self.course))
def teach(self):
print('%s is teaching'%self.name) class Student(Schoolmember):
def __init__(self, name, age, sex, stu_id, grade):
super(Student, self).__init__(name, age, sex)
self.stu_id = stu_id
self.grade = grade def tell(self):
print('''
---info---%s
name %s
age %s
sex %s
stu_id %s
grade %s
''' % (self.name, self.name, self.age, self.sex, self.stu_id, self.grade))
def paid_tution(self, money):
print('%s has paid tution for $%s'%(self.name, money)) # 创建实例
school = School('oldboy', '沙河') s1 = Student('aaa', 22, 'M', '', 'python')
s2 = Student('bbb', 23, 'F', '', 'linux') t1 = Teacher('ccc', 333, 'W', 10000, 'python')
t2 = Teacher('ddd', 444, 'F', 20000, 'linux') school.enroll(s1)
school.hire(t1)
school.teacher[0].teach()
for stu in school.student:
stu.paid_tution(20000)

多态: 表示在父类里定义一个函数,在子类里都可以使用

class Animal(object):
def __init__(self, name): # 初始化
self.name = name
@staticmethod # 静态变量装饰器, 这样不需要输入self变量
def animal_talk(obj):
obj.talk() class dog(Animal): # 定义dog类, 继承Animal
def __init__(self, name):
super(dog, self).__init__(name) def talk(self): # 定义函数属性
print('wowo') class cat(Animal):
def __init__(self, name):
super(cat, self).__init__(name) def talk(self):
print('Meow') c = cat('aaa') # 实例化
d = dog('bbb')
Animal.animal_talk(c) # 调用Animal里面的属性
Animal.animal_talk(d)

python 面对对象 类(继承, 多态)的更多相关文章

  1. 干货:python面对对象类继承简介

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:python视觉算法 PS:如有需要Python学习资料的小伙伴可以加 ...

  2. 小学生绞尽脑汁也学不会的python(面对对象-----类与类之间的关系)

    小学生绞尽脑汁也学不会的python(面对对象-----类与类之间的关系 1. 依赖关系. 最轻的一种关系 在方法中引入另一个类的对象 class Elephant: def __init__(sel ...

  3. 16、python面对对象之类和继承

    前言:本文主要介绍python面对对象中的类和继承,包括类方法.静态方法.只读属性.继承等. 一.类方法 1.类方法定义 使用装饰器@classmethod装饰,且第一个参数必须是当前类对象,该参数名 ...

  4. Python - 面对对象(基础)

    目录 Python - 面对对象(基础) 一. 概述 二. 创建类和对象 三. 面向对象三大特征 封装 继承 多态 Python - 面对对象(基础) 一. 概述 面向过程:根据业务逻辑从上到下写垒代 ...

  5. Python设计模式 - 基础 - 封装 & 继承 & 多态

    面向对象的核心是对象,世间万物都可以看作对象,任何一个对象都可以通过一系列属性和行为来描述,可以包含任意数量和类型的数据或操作.类是用来描述具有相同属性和方法的所有对象的集合.类通常是抽象化的概念,而 ...

  6. 15、python面对对象之类和对象

    前言:本文主要介绍python面对对象中的类和对象,包括类和对象的概念.类的定义.类属性.实例属性及实例方法等. 一.类和对象的概念 问题:什么是类?什么是实例对象? 类:是一类事物的抽象概念,不是真 ...

  7. Python - 面对对象(进阶)

    目录 Python - 面对对象(进阶) 类的成员 一. 字段 二. 方法 三. 属性 类的修饰符 类的特殊成员 Python - 面对对象(进阶) 类的成员 一. 字段 字段包括:普通字段和静态字段 ...

  8. Python - 面对对象(其他相关,异常处理,反射,单例模式,等..)

    目录 Python - 面对对象(其他相关,异常处理,反射,等..) 一.isinstance(obj, cls) 二.issubclass(sub, super) 三.异常处理 1. 异常处理 2. ...

  9. 小学生绞尽脑汁也学不会的python(面对对象-----成员)

    小学生绞尽脑汁也学不会的python(面对对象-----成员) 成员 class Person: def __init__(self, name, num, gender, birthday): # ...

随机推荐

  1. latex公式居中环境

    一般能够用到的环境是 \begin{equation} \begin{aligned} ... \end{aligned} \end{equation} 然而,这种环境用&只能够保证左对齐或者 ...

  2. Win10系统如何利用蓝牙设置动态锁?

    很多小伙伴都会有这样的经历,出门之后没走多远,却已然忘记是否锁门,有强迫症的人就会重新返回查看,以确保门是否反锁. 我们在使用电脑时也是这样,遇到事情要临时离开,却忘记是否锁屏,再返回来就耽误时间了. ...

  3. 4、linux目录结构

    一.目录结构 /: 所有linux操作系统的顶点目录,不像windows,每个分区都有一个顶点目录 /boot 存放系统启动时相关的文件,比如kernel内核,grub引导菜单.(不要删除.) /bi ...

  4. (九)全志平台Tina系统量产前adb shell设密码的方法

    全志平台Tina系统量产前adb shell设密码的方法[适用范围] 全志平台Tina系统 [问题现象] 通常产品量产后都想要以安全方式封闭adb shell,不允许用户或其他开发者使用,因此需要以安 ...

  5. pip命令及虚拟环境的建立

    以下命令是pip命令,是帮助我们安装解决python所需要的环境包 列出已经安装的包 pip list 安装要安装的包 pip install 包名 安装特定版本 pip install django ...

  6. libusb传输endpoint描述符

    至于endpoint描述符,它是属于设置的,每个设置都会有endpoint描述符,也就是每个接口的设置都表示一种功能,既然是实现了功能,那就必须通过endpoint来传输数据,那到底是用到了几个end ...

  7. MySQL 异地 双机房同步之otter

    一.背景: 阿里巴巴B2B公司,因为业务的特性,卖家主要集中在国内,买家主要集中在国外,所以衍生出了杭州和美国异地机房的需求, 同时为了提升用户体验,整个机房的架构为双A,两边均可写,由此诞生了ott ...

  8. 快速取出选中checkbox的值

    原料:jquery 直接上代码 html代码 <html> <head> <title>$Title$</title> </head> &l ...

  9. Java 转发和重定向的区别

    转发是服务器行为,重定向是客户端行为 1.转发在服务器端完成的;重定向是在客户端完成的 2.转发的速度快;重定向速度慢 3.转发的是同一次请求;重定向是两次不同请求 4.转发不会执行转发后的代码;重定 ...

  10. ALIENTEK 战舰ENC28J60 LWIP和UIP补充例程(LWIP WEB有惊喜)

    前面的话:自从接触网络模块,到现在有一阵子时间了,未来必定是网络的世界.学一些网络方面的知识是有必要的.我们ALINTEK 推出的ENC28J60网络模块块作为入门还是不错的.详细见此贴:http:/ ...