一。面向对象super的作用:
class parent(object):
def __init__(self):
self.test() def test(self):
print('parent---') class BaseHandler(object):
def test(self):
print('BASEhandler')
super(BaseHandler,self).test() #不影响后面函数运行,即运行自身的test函数,也运行别人的。如果不加super的话运行自身后停止运行后面相同的函数名(如果父类和子类都有相同的方法,先运行父类的再运行子类的) class task(BaseHandler,parent):
pass
obj=task()
运行结果:

BASEhandler
parent---

不加super后:

class parent(object):

    def __init__(self):
self.test() def test(self):
print('parent---') class BaseHandler(object):
def test(self):
print('BASEhandler') class task(BaseHandler,parent):
pass
obj=task()
运行结果:

BASEhandler

二。函数继承后self的变化

class Bbh:
def server(self):
self.sz()
def sz(self):
self.xiaowen()
def process_request(self):
print('yun')
class Mr(Bbh):
def sz(self):
print('sz')
def xiaowen(self):
self.process_request()
class Yun:
def process_request(self):
print('yun')
class Zzc(Yun,Mr):
pass
obj=Zzc()
obj.server() #运行结果:
sz
class Bbh:
def server(self):
self.sz()
def sz(self):
self.xiaowen()
def process_request(self):
print('yun')
class Mr(Bbh):
def sz(self):
print('sz')
def xiaowen(self):
self.process_request()
def hello(self):
print(self)
self.test()
def test(self):
print('yun')
class Yun(Mr):
def process_request(self):
print('yun')
def test(self):
print('yun') class Zzc(Yun):
pass obj=Zzc()
obj.hello()

1.obj=Zzc()  #self=Zzc

2.obj.hello()  #Zzc中执行hello方法
3.Zzc中无hello方法,在父类Yun中寻找hello方法。
4.类Yun中无hello方法,在父类Mr类中继续寻找
5.Mr中找到hello方法执行 ,hello方法中执行了self.test()方法,在self(Zzc)中再次寻找test方法
6.Zzc中无test方法,在父类Yun中寻找
7.Yun中找到test方法并执行,执行结果等于“yun"

总结:函数被谁实例化self就会一直等于谁,无论多少层继承关系,self的值始终不变。函数被实例化时首先执行__init__方法,如果类中无init方法那么就执行父类的init方法。如果执行的方法类中没有,就会一层一层网上找。(python3广度优先,python2深度优先

class test:
def hello(self):
print('test--------')
class Mr(test):
pass
class Yun(Mr):
pass
class Bbh(test):
def hello(self):
print('Bbh')
class Zzc(Yun,Bbh):
pass
obj=Zzc()
obj.hello()

结果Bbh(广度优先)

注意:

#两个父类都必须还继承别的类,否则会成为深度优先

如:

class test:
def hello(self):
print('test--------')
class Mr(test):
pass
class Yun(Mr):
pass
class Bbh:
def hello(self):
print('Bbh')
class Zzc(Yun,Bbh):
pass
obj=Zzc()
obj.hello()

运行结果:test--------

class test:
name="test"
def __init__(self):
self.age=23
self.city='bz'
def run(self):
print(self.__dict__) #将init中的变量以字典形式列出来
print(test.name) #访问类变量,及时没有实例化也可以访问,但是实例变量必须要实例化后才能访问,或者会报错
obj=test()
obj.run()

python3面向对象注意事项的更多相关文章

  1. Djang1.8+Python2.0迁移到Django2.0+Python3.6注意事项(转)

    Djang1.8+Python2.0迁移到Django2.0+Python3.6注意事项 参考:https://blog.csdn.net/weixin_40475396/article/detail ...

  2. python022 Python3 面向对象

    Python3 面向对象 Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的.本章节我们将详细介绍Python的面向对象编程. 如果你以前没有接触 ...

  3. Python3 面向对象编程

    小案例: #!/usr/bin/env python # _*_ coding:utf-8 _*_ # Author:Bert import sys class Role(object): n=&qu ...

  4. Python3 面向对象(1)

    面向.概述 面向过程: 根据业务逻辑从上到下写垒代码面向过程的设计的核心是过程,过程即解决问题的步骤, 面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西 优点: 极大降低了程序的 ...

  5. Python3 面向对象之:单继承

    一:什么面向对象的继承? 比较官方的说法就是: 继承(英语:inheritance)是面向对象软件技术当中的一个概念.如果一个类别A“继承自”另一个类别B,就把这个A称为“B的子类别”,而把B称为“A ...

  6. Python3 面向对象(基础篇)

    面向对象 关于面向对象的标准定义网上有很多,不再讲述,现在我们来通俗点理解: 面向对象编程相对于面向过程编程和函数式编程来说,看的更长远,实现功能相对更简单. 面向对象:对象就是物体,这种编程思想就是 ...

  7. Python3 面向对象 高级编程

    正常情况下,当我们定义了一个class,创建了一个class的实例后,我们可以给该实例绑定任何属性和方法,这就是动态语言的灵活性.  class Student(object): pass 然后,尝试 ...

  8. Python3 面向对象

    Class 在Python中,定义类是通过class关键字: class Student(object): pass class后面紧接着是类名,即Student,类名通常是大写开头的单词,紧接着是( ...

  9. Python2和Python3安装注意事项

    1. 到官网 https://www.python.org/downloads/windows/ 下载 Windows x86-64 executable installer版本: 2. python ...

随机推荐

  1. 十个强大的DevOps基础设施自动化工具,不容错过

    Devops基础设施自动化的工具 有许多工具用于基础设施自动化.使用哪个工具决定于体系结构和基础设施的需求.下面我们列出了一些伟大的工具,用于不同类别配置管理.编制.持续集成.监控等. 1.Chef ...

  2. 转:.NET 面试题汇总(二)

    目录 本次给大家介绍的是我收集以及自己个人保存一些.NET面试题第二篇 简介 1.接口 2.您在什么情况下会用到虚方法或抽象类,接口? 3.重载(Overload )和覆写(Override)的区别 ...

  3. Django之views视图函数

    views视图函数属于MTV中逻辑处理的部分视图函数包含着两个对象,HttpRequest对象和HttpResponse对象 一.HttpRequest对象 HttpRequest对象在Django中 ...

  4. Questions about UIUC and USC

    Questions about UIUC and USC I am admitted to University of Illinois at Urbana-Champaign (UIUC) Prof ...

  5. 使用Swoole 构建API接口服务

    网上类似的文章已经很多了,我也是刚入门.从头开始学习.所以如果重复写文章阐释,反而会浪费时间,于是就自己动手构建了一个demo,使用swoole 的TCP 服务器接受TCP客户端的发来的http请求, ...

  6. django模板系统(下)

    主要内容:母版,继承母版,块,组件,静态文件 母版 <!DOCTYPE html> <html lang="en"> <head> <me ...

  7. js 小数计算时出现多余的数据

    根据资料显示:是由于十进制换算成二进制,处理后,再由二进制换算成十进制时,造成的误差. 得出:所以(0.1+0.2)!=0.3 而是=0.30000000000000004的结果 解决方法: 参考:h ...

  8. selenium3 浏览器驱动下载及验证

    下载浏览器驱动 当selenium升级到3.0之后,对不同的浏览器驱动进行了规范.如果想使用selenium驱动不同的浏览器,必须单独下载并设置不同的浏览器驱动. 各浏览器下载地址: Firefox浏 ...

  9. CSP vs Actor Go vs Erlang

    源于从Erlang到Go的一些思维碰撞,就像当初从C++到Erlang一样,整理下来记于此. Actor Actor模型,又叫参与者模型,其”一切皆参与者(actor)”的理念与面向对象编程的“一切皆 ...

  10. BZOJ3534:[SDOI2014]重建(矩阵树定理)

    Description T国有N个城市,用若干双向道路连接.一对城市之间至多存在一条道路. 在一次洪水之后,一些道路受损无法通行.虽然已经有人开始调查道路的损毁情况,但直到现在几乎没有消息传回. 幸运 ...