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. WebRTC拥塞控制算法——GCC介绍
  2. JAVA 内存泄露详解(原因、例子及解决)
  3. P2633 Count on a tree
  4. 星恒发布“超锂S7” 新品 采用第7代锰系多元复合锂技术打造
  5. 串口接收到的浮点数(解码后出现的错误)
  6. 栈的应用--马踏棋盘-贪心加栈
  7. Google 出售 Performics
  8. nginx php重定向,nginx如何重定向信息
  9. com.lowagie.itext pom 2.1.7.js6
  10. QQ客服代码(支持临时会话设置)
  11. Android实现AirPlay,DriodAirPlay开发
  12. 安装python时系统找不到指定的路径_系统找不到指定的路径【操作步骤】
  13. Mybatis 框架CRUD的操作 案例
  14. C/C++生成随机数
  15. 学习CALCULATE函数(六)丨帕累托之累计求和
  16. 电子电路:差分放大器分析
  17. 路由器上DHCP配置 及单臂路由
  18. 如何获取微信公众平台图文消息的永久链接
  19. 电脑系统修复之--Windows系统开机蓝屏 EFI Network 0 for IPv4(XX-XX-XX-XX-XX)boot failed.
  20. android shortcut 快捷键 相关问题记录

热门文章

  1. vue判断有没有滚动条
  2. Mathematica三维画图一些技巧
  3. 高并发系统设计 --基于MySQL构建评论系统
  4. 微信小程序IOS手机能正常访问但是安卓手机出现REQUEST FAILED无法访问服务器问题
  5. php sapi 那些坑,安装PHP出现make: *** [sapi/cli/php] Error 1 解决办法
  6. tvp5150 gm7150配置
  7. 代码 todo 忘记_永远不要忘记您的仓库项目经理tickgit的TODO评论
  8. Excel中的LEN和LENB,VBA中的Len和LenB
  9. 输入一个四位数将其加密后输出c语言,输入一个四位数,将其加密后输出.方法是将该数每一位的数字加9,然后除以10取余作为该位上的新数字,最后将千位上的数字和十...
  10. 2021年1~12月语音合成和语音识别论文月报