python基础知识09-继承,多继承和魔术方法
1.继承
class Father:
def init(self,age,sex):
self.age = age
self.sex = sex
class Son(Father): 类名后面写括号,括号中放父类名.
pass
class Dog(默认继承object类):所有类的父类
pass
不可以访问父类私有属性.双下划线属性.除非在内部定义一个super().__私有属性,的方法访问.
class Son(Father):
def bb(self):
print(Father.__a) #私有属性不能访问.
调用的时候先在自己的类中找,然后在父类中找. 类 直接基类 间接基类 最终是object类
bases:查看类的直接父类,特殊属性,返回tuple
类在生成时会自动生成方法解析顺序可以通过 类名.mro()来查看.mro;
前面加两个下划线是私有属性,两边加不是.
super().aa(),调用直接父类的方法
son.mor()方法,查看父属性
2.多继承
class Father:
def aa():
print()
class Mother:
def aa():
print()
class Son(Father,Mother):
pass
a = Son()
a.aa() 如果多继承都有aa方法.先去继承前面的,就是从左往右.
通过重写覆盖掉父类的方法.
def aa(self):
print('这是我的')
重写后又想用父类的方法:
1.Father.aa(Father(1,2)) 类名调用必须要用实例,或者传self;
2.super().aa() 直接调用父类的方法,但是无法访问双下划线的私有属性.
class Base:
def play(self):
super().play()
print('这是Base')
class A(Base):
def play(self):
super().play()
print('这是A')
class B(Base):
def play(self):
super().play()
print('这是B')
class C(A,C):
def play(self):
super().play()
print('这是C)
3.魔术方法.
class Aa:
def init(self.num):
self.num = num
def add(self, other):
s = self.num + other.num
return s
a = Aa(5)
b = Aa(9)
print(a + b)
add(self,other)魔术方法
sub() #x-y
mul() # x *y
mod() # x%y
iadd() # x+=y
isub() # x-=y
radd() # y+x
rsub() # y-x
imul() # x *= y
imod() # x %=y
str和repr原理:在python中,str和repr方法在处理对象的时候,分别调用的是对象的str()和repr()方法,print打印对象,调用str函数,如果对象没有定义str方法,则调用repr()方法处理,在交互模式下,直接输出对象,显示repr()的返回值.
如果在类里找不到str()方法,就会执行repr()方法,如果类中没有repr方法,就去父类里面找.
str方法 和repr方法要写返回值,return,不写会报错.
对使用者友好的str()
对开发者调试友好的repr()
call方法,魔术方法 调用时触发,可以使类的实例进行调用.
pycharm中如何设置交互模式,run > edit configration > 勾选第三个选项.
类中查询相关信息的方法(了解即可)
class 查看类名 实例.--class--
dict 查看全部属性,返回属性和属性值键值对形式 实例.--dict--
--doc-- 查看对象文档,即类中用三个引号引起来的部分. 类名.--dict--
--bases-- 查看父类 类名.--base--
--mro-- 查看多继承的情况下,子类调用父类方法时,搜索顺序. 子类名.--mro--
实例.--class--.--mro--
4.基于多继承的Mix-in设计模式
传统分类思想 转变 为 拼积木思想.
分类思想: 动物 > 人>> 男人,女人
Mix-in思想:胳膊,脑袋,腿>> 人
注意:一般,"Mix-in类"是继承的终点!
python基础知识09-继承,多继承和魔术方法的更多相关文章
- python 基础知识(一)
python 基础知识(一) 一.python发展介绍 Python的创始人为Guido van Rossum.1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心开发一个新的脚本 ...
- python基础知识讲解——@classmethod和@staticmethod的作用
python基础知识讲解——@classmethod和@staticmethod的作用 在类的成员函数中,可以添加@classmethod和@staticmethod修饰符,这两者有一定的差异,简单来 ...
- python基础知识小结-运维笔记
接触python已有一段时间了,下面针对python基础知识的使用做一完整梳理:1)避免‘\n’等特殊字符的两种方式: a)利用转义字符‘\’ b)利用原始字符‘r’ print r'c:\now' ...
- Python 基础知识(一)
1.Python简介 1.1.Python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆(中文名字:龟叔)为了在阿姆斯特丹打发时 ...
- Python基础知识详解 从入门到精通(七)类与对象
本篇主要是介绍python,内容可先看目录其他基础知识详解,欢迎查看本人的其他文章Python基础知识详解 从入门到精通(一)介绍Python基础知识详解 从入门到精通(二)基础Python基础知识详 ...
- Python开发【第二篇】:Python基础知识
Python基础知识 一.初识基本数据类型 类型: int(整型) 在32位机器上,整数的位数为32位,取值范围为-2**31-2**31-1,即-2147483648-2147483647 在64位 ...
- python基础知识(二)
以下内容,作为python基础知识的补充,主要涉及基础数据类型的创建及特性,以及新数据类型Bytes类型的引入介绍
- python爬虫主要就是五个模块:爬虫启动入口模块,URL管理器存放已经爬虫的URL和待爬虫URL列表,html下载器,html解析器,html输出器 同时可以掌握到urllib2的使用、bs4(BeautifulSoup)页面解析器、re正则表达式、urlparse、python基础知识回顾(set集合操作)等相关内容。
本次python爬虫百步百科,里面详细分析了爬虫的步骤,对每一步代码都有详细的注释说明,可通过本案例掌握python爬虫的特点: 1.爬虫调度入口(crawler_main.py) # coding: ...
- python 爬虫与数据可视化--python基础知识
摘要:偶然机会接触到python语音,感觉语法简单.功能强大,刚好朋友分享了一个网课<python 爬虫与数据可视化>,于是在工作与闲暇时间学习起来,并做如下课程笔记整理,整体大概分为4个 ...
随机推荐
- Luogu P3694 邦邦的大合唱站队 【状压dp】By cellur925
题目传送门 最开始学状压的时候...学长就讲的是这个题.当时对于刚好像明白互不侵犯和炮兵阵地的我来说好像在听天书.......因为我当时心里想,这又不是什么棋盘,咋状压啊?!后来发现这样的状压多了去了 ...
- 跟我一起玩Win32开发(24):计时器
有好些时间没写博客了,今天要来耍一下计时器,就是我们常说的Timer,它虽然不是什么复杂的东西,也称不 上牛X,不过,用处还是不少的,对于那些需要每隔一定时间执行一次的任务,那是相当有用. 先来认识一 ...
- [AHOI2005]病毒检测
Description 科学家们在Samuel星球上的探险仍在继续.非常幸运的,在Samuel星球的南极附近,探险机器人发现了一个巨大的冰湖!机器人在这个冰湖中搜集到了许多RNA片段运回了实验基地.科 ...
- 洛谷 P2261 [CQOI2007]余数求和 ||整除(数论)分块
参考:题解 令f(i)=k%i,[p]表示不大于p的最大整数f(i)=k%i=k-[k/i]*i令q=[k/i]f(i)=k-qi如果k/(i+1)=k/i=qf(i+1)=k-q(i+1)=k-qi ...
- linux之lamp环境的搭建
linux之lamp环境的搭建 1.安装lamp环境的安装工具 我们的lamp环境都是采用源码包进行编译安装: 编译安装需要工具gcc gcc-c++. 建议在线联网安装:yum -install ...
- java 环境变量的设置,备忘
新建系统变量JAVA_HOME 和CLASSPATH 变量名:JAVA_HOME 变量值:C:\Program Files\Java\jdk1.7.0变量名:CLASSPATH 变量值:.;%JAVA ...
- [已读]Sass与Compass实战
介绍了Sass基础语法与Compass框架,这个网上参考文档就OK了,另外介绍了compass生成图片精灵和相应的css,貌似现在单纯用sass和compass的挺少,要不grunt,要不FIS,而g ...
- nodejs+multer+ajax文件上传
前端 html代码 + ajax代码 form表单(无需指定action) <form enctype="multipart/form-data" method=" ...
- 洛谷P2762 太空飞行计划问题(最大权闭合图)
题意 有$m$个实验,$n$中器材,每个实验需要使用一些器材 每个实验有收入,每个器材有花费 最大化收入 - 花费 Sol 最大权闭合图的经典应用 从$S$向每个实验连流量为该实验收入的边 从每个器材 ...
- 【java基础】Java锁机制
在读很多并发文章中,会提及各种各样锁如公平锁,乐观锁等等,这篇文章介绍各种锁的分类.介绍的内容如下: 公平锁/非公平锁 可重入锁 独享锁/共享锁(广义) 互斥锁/读写锁(独享锁/共享锁的实现) 乐观锁 ...