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-继承,多继承和魔术方法的更多相关文章

  1. python 基础知识(一)

    python 基础知识(一) 一.python发展介绍 Python的创始人为Guido van Rossum.1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心开发一个新的脚本 ...

  2. python基础知识讲解——@classmethod和@staticmethod的作用

    python基础知识讲解——@classmethod和@staticmethod的作用 在类的成员函数中,可以添加@classmethod和@staticmethod修饰符,这两者有一定的差异,简单来 ...

  3. python基础知识小结-运维笔记

    接触python已有一段时间了,下面针对python基础知识的使用做一完整梳理:1)避免‘\n’等特殊字符的两种方式: a)利用转义字符‘\’ b)利用原始字符‘r’ print r'c:\now' ...

  4. Python 基础知识(一)

    1.Python简介 1.1.Python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆(中文名字:龟叔)为了在阿姆斯特丹打发时 ...

  5. Python基础知识详解 从入门到精通(七)类与对象

    本篇主要是介绍python,内容可先看目录其他基础知识详解,欢迎查看本人的其他文章Python基础知识详解 从入门到精通(一)介绍Python基础知识详解 从入门到精通(二)基础Python基础知识详 ...

  6. Python开发【第二篇】:Python基础知识

    Python基础知识 一.初识基本数据类型 类型: int(整型) 在32位机器上,整数的位数为32位,取值范围为-2**31-2**31-1,即-2147483648-2147483647 在64位 ...

  7. python基础知识(二)

    以下内容,作为python基础知识的补充,主要涉及基础数据类型的创建及特性,以及新数据类型Bytes类型的引入介绍

  8. python爬虫主要就是五个模块:爬虫启动入口模块,URL管理器存放已经爬虫的URL和待爬虫URL列表,html下载器,html解析器,html输出器 同时可以掌握到urllib2的使用、bs4(BeautifulSoup)页面解析器、re正则表达式、urlparse、python基础知识回顾(set集合操作)等相关内容。

    本次python爬虫百步百科,里面详细分析了爬虫的步骤,对每一步代码都有详细的注释说明,可通过本案例掌握python爬虫的特点: 1.爬虫调度入口(crawler_main.py) # coding: ...

  9. python 爬虫与数据可视化--python基础知识

    摘要:偶然机会接触到python语音,感觉语法简单.功能强大,刚好朋友分享了一个网课<python 爬虫与数据可视化>,于是在工作与闲暇时间学习起来,并做如下课程笔记整理,整体大概分为4个 ...

随机推荐

  1. Mac 开发 Hue

    1)环境准备 Maven 3.6.1 python (Anaconda 2.7.16) MySQL 5.7 git 2.21 2)Hue源码下载 git clone git@github.com:ar ...

  2. Luogu P1069细胞分裂【分解质因数/数论】By cellur925

    题目传送门 发现这题真的坑超多啊...调了一晚上终于过了...我好菜啊qwq. 题意说的比较明白,让你求满足(si^k)%(m1^m2)==0的最小k值.然后看数据范围我们知道,我们肯定不能暴力的判断 ...

  3. Beta版本冲刺第一天!

    该作业所属课程:https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass2 作业地址:https://edu.cnblogs.com/c ...

  4. spring boot :error querying database. Cause: java.lang.IllegalArgumentException: dataSource or dataSourceClassName or jdbcUrl is required

    配置多个数据源启动报错,error querying database. Cause: java.lang.IllegalArgumentException: dataSource or dataSo ...

  5. 跟我一起玩Win32开发(11):使用控件——先来耍一下按钮

    用户通过控件与应用程序交互,在吹牛之前,先介绍一个工具,这是官方的工具,使用它,你可以预览常用控件的外观.样式,以及对控进行操作时接收和发送哪些消息.下载地址如下: http://www.micros ...

  6. Chips CodeForces - 333B

    Chips CodeForces - 333B 题意:有一个n*n的棋盘,其中有m个格子被禁止.在游戏开始前要将一些芯片(?)放到四条边上(但不能是角上).游戏开始后,每次操作将每一个芯片移动到它四周 ...

  7. Unity中所有特殊的文件夹

    1. 隐藏文件夹以.开头的文件夹会被Unity忽略.在这种文件夹中的资源不会被导入,脚本不会被编译.也不会出现在Project视图中.2. Standard Assets在这个文件夹中的脚本最先被编译 ...

  8. Ionic之增加样式会自动换行解决方案

    设置样式的时候,引用自身的样式,能正常显示,但是引用自定义样式显示的时候,竟然或自动换行,好尴尬. 原本代码: $('.codeSuccess').css({'display':'block'}); ...

  9. Angularjs中表格的增删改查

    在一个管理系统中,不外乎都是增删改查.现在比如有个表格,我想修改当前行的数据,如下图所示 一点击修改的时候,当前页面我需要修改的数据,变成能修改的样式,点击保存能保存当前修改的数据,如下图所示 需要引 ...

  10. 你有学习者综合征吗?Web 开发是重灾区

    [导读]:学习者综合征的主要表现:学而不用,不停学习,却没有真正实际应用知识来做东西.如果过去的一年里,学习的语言或框架超过三个,那可能已经感染学习者综合征了.Web 开发是重灾区咯. 你有学习者综合 ...