1.如何创建类

class 类名:
pass

2.如何创建方法

构造方法:
__init__
obj = 类名('a1') 普通方法:
obj = 类名('xxx')
obj.普通方法名()

3.图解面向对象的创建和执行

4.面向对象三大特性之一:封装

'''定义'''
class Bar:
def __init__(self,name,age):
self.n = name
self.a = age '''执行'''
b1 = Bar('admin',26)
b2 = Bar('qq',48)

  4.1 普通方法与构造方法对比:

5.面向对象三大特性之二:继承

#*****创建父系类******
class Beast: #动物的功能
def eat(self):
print(' %s吃'%(self.name))
def drink(self):
print(' %s喝'%(self.name))
def shit(self):
print(' %s拉'%(self.name))
def pee(self):
print(' %s撒' % (self.name)) #********创建猫的 类******
class Cat(Beast): #猫继承动物的功能
def __init__(self,name):
self.name = name
self.breed = '猫'
def fig(self):
print('%s\n'%(self.name),'喵喵叫') #******* 创建狗的 类********
class Dog(Beast): #狗继承动物的功能
def __init__(self,name):
self.name = name
self.breed = '狗'
def fig(self):
print('%s\n'%(self.name),'汪汪叫') '''执行''' '''猫的部分功能执行'''
a = Cat('猫')
a.fig()
a.eat() '''狗的部分功能执行'''
b = Dog('狗')
b.fig()
b.drink()

 6.面向对象三大特性三:多态继承

  6.1 多态继承案列一:

 class F_0:
def a(self):
print('F_0.a')
class F0(F_0):
def a1(self):
print('F0.a') class F1(F0):
def a1(self):
print('F1.a') class F2():
def a(self):
print('F2.a') class S(F1,F2):
pass #*****执行***** obj = S()
obj.a() # F_0.a

  过程:对象obj 现在F1中找a(),F1中没有,在F1的父系(F0)中找,如果F0中没有,再去F0的父系(F_0)中找,如果有,就打印,不在去F2中找,如果没有,就去F2中找。执行过程:左侧优先,一条道走到黑。具体如图展示:

  6.2 多态继承案列二:(两个类有交集的类)

 class Base:
def a2(self):
print('Base.a')
class F0(Base):
def a1(self):
print('F0.a') class F1(F0):
def a1(self):
print('F1.a') class F2(Base):
def a(self):
print('F2.a') class S(F1,F2):
pass obj = S()
obj.a() # F2.a
obj.a2() #Base.a

  Base 类是类F1和F2的交集。过程:对象obj 现在F1中找a(),F1中没有,在F1的父系(F0)中找,如果F0中没有;开始从F2中找,F2中没有就去F2的父系(Base)中找。

结论:Base 如果是两个类的交集,那么执行过程是先执行左边的,再执行右边的,从右边执行过程中打印。如图所示:

  6.3 多态继承案列三:

 class BaseReuquest():
pass class RequestHandler(BaseReuquest):
def serve_forever(self):
#self 是obj
print('RequestHandler.serve_forever')
self.process_request()
def process_request(self):
print('RequestHandler.process_request') class Minx:
def process_request(self):
print('Minx.process_request') class Son(Minx,RequestHandler):
pass obj = Son()
obj.serve_forever()

  过程: 创建4个类,执行obj.serve_forever()语句,根据左侧优先,先执行 类 Minx ,没有就执行右侧的 类 RequestHandler ,在类 RequestHandler 中找server_forever()方法执行,这时候会打印 print('RequestHandler.serve_forever');由于方法里面有self.process_request(),故而会执行 类 Minx 中 process_request() 的方法。原因是 self 是对象 obj ,所以:self.process_request() 也就是obj.process_request(),根据左侧优先,所以会现在 类Minx 中找process_request() 方法。如图所示:

Python——面向对象(初级篇)的更多相关文章

  1. python 面向对象初级篇

    Python 面向对象(初级篇) 概述 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发" ...

  2. Python开发【第七篇】:面向对象 和 python面向对象进阶篇(下)

    Python开发[第七篇]:面向对象   详见:<Python之路[第五篇]:面向对象及相关> python 面向对象(进阶篇)   上一篇<Python 面向对象(初级篇)> ...

  3. Python 面向对象 (进阶篇)

    <Python 面向对象(初级篇)>文章介绍了面向对象基本知识: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个“函数”供使用(可 ...

  4. python面向对象初级(七)

    概述 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发“更快更好更强...” 面向过程编程最易被初学 ...

  5. Python自动化之pickle和面向对象初级篇

    pickle模块扩展 1 pickle之文件操作 示例1 with open("test", 'rb') as f: lines = f.readlines() print(pic ...

  6. Python基础—面向对象(初级篇)

    一.什么是面向对象编程 面向对象编程(Object Oriented Programming,OOP,面向对象程序设计),python语言比较灵活即支持面向对象编程也支持面向函数式编程. 面向过程编程 ...

  7. [python面向对象]--基础篇

    1.#类 #类就是一个模板,模板里可以包含多个函数,函数里实现一些功能 #定义一个类 class bar: def foo(self,agr): print(self,agr) obj = bar() ...

  8. 十六、python面向对象基础篇

    面向对象基础: 在了解面向对象之前,先了解下变成范式: 编程范式是一类典型的编程风格,是一种方法学 编程范式决定了程序员对程序执行的看法 oop中,程序是一系列对象的相互作用 python支持多种编程 ...

  9. python 面向对象 初级

    面向对象 与 面向过程 面向对象对象,是根据某个对象,进行编写对象属性,不考虑对象以外的因素,只对对象本事的一些属于自己的属性进行创造,不用考虑 业务之间的逻辑. 面向过程, 是按照业务的一步步发展进 ...

  10. python之初级篇2

    一.数字类型 1)整数 int 类型 - bit_length() # 查询以二进制表示一个数字的值所需的位数 - int.from_bytes(bytes,byteorder) # 返回给定字节数组 ...

随机推荐

  1. JS原型与原型链

    1.原型(公用属性) 首先,我们来讲讲浏览器的初始状态,就是在无代码的情况下,浏览器所分配到的内存的使用情况,首先浏览器会创建一个全局对象global,而在这个全局对象global内含有许多的全局函数 ...

  2. @Html.EditorFor() 用法

    @Html.EditorFor()返回一个由表达式表示的对象中的每个属性所对应的input元素,主要是针对强类型,一般这种方式用得多些a.@Html.EditorFor(mode=>mode.N ...

  3. [C#.Net]KeyDown(KeyUp)和KeyPress的区别

    在keyDown事件里使用keyValue:在keyPress事件里使用keyChar. keyValue转换keyChar:(char)keyValue 验证只有数字和backSpace e.han ...

  4. response设置编码格式

    response设置编码的三种方式 在java后台的Action代码或者Servlet代码中用response的方法来设置输出内容的编码方式,有以下三个方法: 1.response.setCharac ...

  5. PHP字符串转实体函数

    与HTML实体相关的函数 htmlspecialchars函数 描述:预定义的字符转换为HTML实体 语法:string htmlspecialchars(string $string [,int $ ...

  6. Anaconda 3中配置OpenCV

    平台:win10 x64+Anaconda 3(64-bit)+opencv_python-3.4.5+contrib-cp37-cp37m-win_amd64 一.OpenCV下载 Python环境 ...

  7. 《从0到1》深度阅读笔记zz

    没有人能精准地预测未来,我们只知道两件事:一是世界必然会变得不同:二是现在再好的描述也不能让我们看到清晰的未来. 创业者把成就归功于商业模式和机会窗口,归功于创业者本人拥有的资源和能力,但还有一个最重 ...

  8. 2019.01.21 bzoj1758: [Wc2010]重建计划(01分数规划+长链剖分+线段树)

    传送门 长链剖分好题. 题意简述:给一棵树,问边数在[L,R][L,R][L,R]之间的路径权值和与边数之比的最大值. 思路: 用脚指头想都知道要01分数规划. 考虑怎么checkcheckcheck ...

  9. pat1079+1086+1090+1094(树的遍历)感想

    今天做了这4道题,虽然大部分以前做过,但还是有些知识掌握不全. 总结一下所用的树的知识及解决方法 (1)非二叉树的遍历: 非二叉树就是图,所以它的存储结构类似邻接表,c++提供了vector数组可以很 ...

  10. java中正则表达式常用方法

    一.匹配 String  matches()方法.用规则匹配整个字符串,只要有一处不符合规则,就匹配结束,返回false. 举例: public static void checkQQ(){ Stri ...