super()函数

Python3中可以使用super()替代super().init()

作用:在子类中调用父类的方法进行使用

a.单继承(只继承一个父类,父类没有继承其他类)

class A(object):def __init__(self):print('i am class A')class C(A):def __init__(self):super(C, self).__init__()
# super(C self).init() 这句话的解释是:
#C是类,self是C的一个实例,super把self转化为父类A的一个实例对象,然后去使用init()方法print('yes')c = C()

b.多重继承(父类也是继承了对象的类的)

class A(object):def __init__(self):print('i am class A')class B(A):def __init__(self):super(B, self).__init__()print('i am class B')class C(B):def __init__(self):super(C, self).__init__()print('yes')c = C()# 这里每一级super函数只是调用上一级的父类函数而已,所以C调用的是B的init函数,然后如果B的类里面也# 调用了A的init函数,就会先执行,

c.多继承(继承多个单独的类,不是多级的关系)

class A(object):def __init__(self):print('i am class A')def foo(self):print('i am another A')class B():def __init__(self):print('i am class B')def foo(self):print('i am another B')class C(A,B):def __init__(self):super(C, self).__init__()print('yes')c = C()
c.foo()#结果是继承了A的属性,然后调用时先调用了A的函数,然后使用实例调用foo函数,打印出来的也是A的foo
#如果我们写成class C(B,A)则会先调用B的属性

参考的连接:(44条消息) Python3中的super函数_技术最差的的博客-CSDN博客_python3 super

(44条消息) Python中的super()用法_半遮雨的博客-CSDN博客_python super

property() 函数

作用:在新式类中返回属性值。

语法:  class property([fget[, fset[, fdel[, doc]]]])

  • fget -- 获取属性值的函数
  • fset -- 设置属性值的函数
  • fdel -- 删除属性值函数
  • doc -- 属性描述信息

使用方式:

a. 装饰器:在方法上应用装饰器

b. 类属性: 在类中定义值为 property 对象的类属性

可参考的教程 Python property() 函数 | 菜鸟教程 (runoob.com)

Python面向对象提升与收发邮件_哔哩哔哩_bilibili p5

装饰器 使用例子 :

该类的属性有三种访问方式,并分别对应三个被 @property、@方法名.setter、@方法名.deleter 修饰的方法,这三个方法对同一个属性:获取,修改,删除

class Money:def __init__(self):self._money = 0@propertydef money(self):return self._money@money.setterdef money(self, value):self._money = value@money.deleterdef money(self):print('我没钱了')del self._moneydollar = Money()
m = dollar.money  # 获取,dollar.money 在调用时没有()
print(m)
dollar.money = 10000000  # 修改
m = dollar.money
print(m)
del dollar.money  # 删除

类属性方式使用例子:

如果 c 是类 C 的实例化, c.x 将触发 getter,c.x = value 将触发 setter , del c.x 触发 deleter。

class Money:def __init__(self):self._money = 0def get_money(self):return self._moneydef setter_money(self, value):self._money = valuedef deleter_money(self):print('我没钱了')del self._moneymoney = property(get_money, setter_money, deleter_money)dollar = Money()
m = dollar.money
print(m)
dollar.money = 100000000
m = dollar.money
print(m)
del dollar.money

动态添加方法和属性

动态添加属性: 对象名.属性名

动态添加实例方法:引入 from types import MethodType,

MethodType第一个参数是函数本身,第二个是调用函数时,传给方法的第一个参数

更详细的讲解参考链接(44条消息) 【Python】 如何动态添加类属性与方法_本末实验室-CSDN博客_python添加类属性

一个B站博主举的例子:

from  types import MethodType# 创建一个空类(即没有属性和方法)
class Person(object):__slots__ = ("name","age","speak")per = Person()
# 动态添加属性,这体现了动态语言的特点灵活性
per.name = "aa"
print(per.name)# 动态添加方法
def say(self):print("My name is" +self.name)
per.speak=MethodType(say, per) #调用say方法时默认per传入
per.speak()#如果想要限制实例的属性,例如只允许给对象添加 name age 属性
# 解决:需要在定义类时,定义一个特殊的属性(__solt__)来限制动态添加的属性

培训作业1:动态给类添加方法,对猫的类中没有设置奔跑的方法,在类外添加这个方法,并打印

# 引入MethodType以便动态给类添加方法
from types import MethodType# 创建一个猫类(设为空类,即没有属性和方法)
class Cat(object):def __init__(self, name, way):self.name = nameself.way = way# 实例化对象
c = Cat('大橘', '快速奔跑')# 动态添加年龄属性,使用对象名.属性名添加,这体现了动态语言的特点灵活性
c.age = 1
# 输出动态添加的年龄属性
print(c.age)# 动态添加run方法,打印输出猫的名称和奔跑方式
def run(self):print('猫的名字是%s,奔跑方式是%s' % (self.name, self.way))# 实例化对象
p1 = Cat('大橘', '快速奔跑')
# MethodType第一个参数是函数本身,第二个是调用run函数时,传给run方法的第一个参数。
p1.run = MethodType(run, p1)
# 调用方法
p1.run()

运算符重载

定义:让自定义的类生成的对象(实例)能够使用运算符进行操作

好处:使程序简洁易读并对自定义对象将运算符赋予新的规则

运算符重载列表

一个简单的例子(B站):

class Person(object):def __init__(self, age):self.age = age# 运算符重载,self代表前一个对象,other代表后一个对象def __add__(self, other):   return self.age + other.agedef __str__(self):return str(self.age)  # 数据类型转换#实例化对象
p1 = Person(1)
p2 = Person(2)
print(p1 + p2)  # 等价于print( p1.__add__(p2))

培训作业2: 使用__pow__和__lt__两个运算符重载,对两个成绩进行幂运算和比较大小运算

class Student(object):  # 定义一个学生类def __init__(self, grade):  # 定义构造方法self.grade = gradedef __pow__(self, other):  # __pow__运算符重载,幂运算return self.grade ** other.gradedef __lt__(self, other):  # __lt__运算符重载,判断前一个对象值是否小于后者,若是返回true否则返回falsefirst = self.gradetwo = other.gradereturn first < twodef __str__(self):return str(self.grade)  # 数据类型转换p1 = Student(3)  # 第一个实例对象
p2 = Student(2)  # 第二个实例对象
print(p1 ** p2)  # 等价于print( p1.__pow__(p2))
print(p1 < p2)  # 等价于print( p1.__lt__(p2))

python寒假培训第二课相关推荐

  1. 小学生python趣味编程-【少儿编程】python趣味编程第二课:写文字

    python趣味编程第二课:本文仅针对8-16岁的青少年,所以流程是按如何去教好中小学生走的,并不适合成人找工作学习,因为进度也是按照青少年走的 大家好,我是C大叔,上一篇文章已经跟大家介绍了一款开发 ...

  2. 初中信息技术python教案_初中信息技术优质课教案 python程序设计开发第二课 第5课变量 教案...

    环节 教学过程 知识 点 导学过程 学习过程 课前 准备 1. 分成 4 组,选出组长,奖励规则: 2. 打开 Python 程序: 3. 快捷键的使用: Ctrl+N 新建 Ctrl+S 保存 Ct ...

  3. Python界面编程第二课:Pyside2 创建窗口 (Python GUI)

    Pyside2 创建窗口 (Python GUI) – 在这篇Pyside2文章中,会演示如何创建窗口,学习本课之前请先看第一课<我们开始用Pyside2 (Qt For Python)> ...

  4. Python基础入门第二课--Python编辑器的选择

    Python 非常易学,强大的编程语言.Python 包括高效高级的数据结构,提供简单且高效的面向对象编程. Python 的学习过程少不了 IDE 或者代码编辑器,或者集成的开发编辑器(IDE).这 ...

  5. python小白入门第二课-标识符数据类型字符串方法

    一.标识符 定义:标识符就是一个名字,它的主要作用就是作为变量.函数.类.模块以及其他对象的名称.就好像我们人一样,需要起个名字,便于称呼.指代. 1.变量就是标识符的一种 2.标识符:只要是在pyt ...

  6. 2、python学习笔记第二课:python开发环境

    python常用的开发环境: IDLE: Pycharm: wingIDLE: Eclipse: Ipython; 交互环境:

  7. python2基础难点_第2课Python基础知识,第二课,python,要点

    1.Python语⾔ 1.1 Python语⾔的基本概念 Python 是⼀种极少数能兼具 简单 与 功能强⼤ 的编程语⾔.你将惊异于发 现你正在使⽤的这⻔编程语⾔是如此简单,它专注于如何解决问题,⽽ ...

  8. Python Flask Web 第二课 —— 请求-响应循环

    1. 请求与请求上下文 Flask 从客户端收到请求(请求对象,比如请求某 URL)时,路由给视图函数处理,视图函数需要访问这些请求对象(它封装了客户端发送的 HTTP 请求),这样才能处理请求. 要 ...

  9. Python界面编程第二十一课:Pyside2 (Qt For Python)打印预览QTextEdit内容

    Pyside2 的QPrintSupport类中的QPrinter 和 QPrintPreviewDialog支持打印功能. 先看完整代码: from PySide2.QtWidgets import ...

最新文章

  1. nlohmann/json使用笔记
  2. python x y z 1_Python下的数值列表 - range(x,y,z)函数
  3. springboot 接收小程序图片以及参数_常见的SpringBoot面试题一
  4. 软件测试和系统试验,实验四 软件系统性测试
  5. c++ ptree判断是否存在节点_CTreeCtrl 查找 等于某值 的节点,并设置为高亮
  6. mysql replace into 语法_mysql Replace into与Insert update
  7. ORACLE 全文搜索(精度高排前)
  8. 腾讯的强大不是偶然,小马哥很强大
  9. Windows文件服务器会话清理,在 Windows Server 上使用磁盘清理
  10. Mysql学习总结(13)——使用JDBC处理MySQL大数据
  11. UVA 10340 - All in All
  12. iOS开发 - 在状态栏显示FPS,CPU和内存信息
  13. Java面试问题 021-030
  14. 商业价值:中国互联网的产品经理时代
  15. 道路施工安全智能预警
  16. OpenContrail 体系架构文档
  17. 如何免费下载知网文献_知网文献下载工具_知网下载器Cnkidownloader
  18. Django models Fild详解
  19. 计算机考研各科时间安排,计算机考研专业课复习全程的时间安排
  20. 在下拉列表框上添加--请选择--

热门文章

  1. leetcode题刷250天(84)——454. 四数相加 II(加法分配律)
  2. Myshell AI:让你轻松提高英语口语和听力的神器
  3. matlab日期转儒略历,matlab儒略日转为日期
  4. html5代码验证电话号码,这个我觉得挺重要的!
  5. adb工具(通用的调试工具、debug工具)操作命令详解
  6. matlab遗传算法外卖配送优化(新的约束条件)【matlab优化算法十六】
  7. WireShark黑客发现之旅(5)—扫描探测
  8. 英语语法最终珍藏版笔记-1英语动词的时态
  9. iOS调用第三方导航和线路规划
  10. ctab提取dna流程图_CTAB法提取植物DNA原理以及步骤