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

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. YII2中controller中的behaviors中的behavior内部是如何被使用的?

    1. behaviors方法的调用: 在祖先对象components中有一个ensureBehaviors方法,代码如下: /** * Makes sure that the behaviors de ...

  2. 网络初级篇之VLAN(原理)

    一.早期网络的问题 1.若某时刻有多个节点同时试图发送数据,极易产生冲突域,这样使得网络传输效率大大降低. 2.从一节点发送的数据都会被送到各个节点,极易形成广播域,这样会使得产生太多的广播流量而耗费 ...

  3. Java SE 核心 II【Collection 集合框架】

    Collection集合框架 在实际开发中,需要将使用的对象存储于特定数据结构的容器中.而 JDK 提供了这样的容器——集合框架,集合框架中包含了一系列不同数据结构(线性表.查找表)的实现类.集合的引 ...

  4. STM32 stm32fxxx_flash.icf文件的作用详解

    文章转载自:https://blog.csdn.net/weibo1230123/article/details/80142210 每个芯片开发商都会针对每款芯片来编写一个.icf文件就是传说中的链接 ...

  5. vue+elementui搭建后台管理界面

    1 会话存储 使用html5的 sessionStorage 对象临时保存会话 // 保存会话 sessionStorage.setItem('user', username) // 删除会话 ses ...

  6. 简单混合锁(HybridLock)

    internal sealed class SimpleHybridLock : IDisposable { //基元用户模式构造使用 ; //基元内核模式构造 private AutoResetEv ...

  7. 一个javascript面试题

    javascript面试题代码: <script type="text/javascript"> function fun(x,y){ console.log(&quo ...

  8. sql 脚本过大

    先把sql脚本文件中的创建部分  剪切 出来执行,创建一个数据库 然后执行cmd命令 sqlcmd   -S    CAOHONGWEI   -U   sa   -P   p@ss!123   -d  ...

  9. 测试工具jmeter

    测试工具jmeter http:压力测试 https://www.cnblogs.com/stulzq/p/8971531.html

  10. IO框架:asyncio 下篇

    动态添加协程 在实战之前,我们要先了解下在asyncio中如何将协程态添加到事件循环中的.这是前提. 如何实现呢,有两种方法: 主线程是同步的 import time import asyncio f ...