1.Python实现OOP可以概括为三个概念:

  • 继承:基于Python属性查找
  • 多态:在x.method中,method的意义取决于x的类型
  • 封装:方法和运算符实现行为,数据隐藏是一种惯例

2.委托:通常就是指控制器对象内嵌其他对象,而把运算请求传给那些对象。

3.类的伪私有属性:变量名压缩,一种把类所创建的变量名局部化的方式,主要是为了避免实例内的命名空间的冲突,当每个类说self.x时所得的值,

  取决于最后一个赋值的是那个类。变量名

class C1:
def meth1(self):
self.x = 88
def meth2(self):
print(self.x) class C2(object):
"""docstring for C2"""
def metha(self):
self.x = 99
def methb(self):
print(self.x) class C3(C1,C2):
pass if __name__ == "__main__":
c3 = C3()
c3.meth1()
c3.metha()
c3.meth2() # 此时调用输出为99,会覆盖C1的x的值
class C1:
def meth1(self):
self.__x = 88
def meth2(self):
print(self.__x) class C2(object):
"""docstring for C2"""
def metha(self):
self.__x = 99
def methb(self):
print(self.__x) class C3(C1,C2):
pass if __name__ == "__main__":
c3 = C3()
c3.meth1()
c3.metha()
c3.meth2() # 此时调用输出为88

4.绑定方法与无绑定方法

对象点号运算,而没有用括号调用之前产生绑定方法

类点号运算之后,产生无绑定方法,但是调用之前必须明确的传入self参数

class Test:
def display(self,*arg):
print(arg) if __name__ == "__main__":
t1 = Test()
func = t1.display # 绑定方法
func([1,2,3]) # 调用时不必指出self参数,因为已经将方法绑定到对象t1 t2 = Test()
func2 = Test.display # 无绑定方法
func2(t2,[4,5,6]) # 调用时必须明确指定self参数

Python OOP 面向对象的更多相关文章

  1. Python OOP面向对象

    一.什么是面向对象的程序设计 1.面向过程 程序设计:核心是过程二字,过程指的是解决问题的步骤,即先干什么再干什么......面向过程的设计就好比精心设计好一条流水线,是一种机械式的思维方式. 优点是 ...

  2. python oop面向对象笔记

    #coding:utf-8 class Person(object): def __init__(self,name,wage): self.name = name self.wage = wage ...

  3. 如何吃透Python的面向对象(OOP)

    ​本篇可乐和大家一起来吃透 Python 的面向对象,类和实例. 面向对象(OOP) 解释:面向对象它是一种编程的思想,将现实事物抽象化为编程对象. 举例说明:喝可乐 ① 选择自己根据配方买对应的材料 ...

  4. python基础——面向对象编程

    python基础——面向对象编程 面向对象编程——Object Oriented Programming,简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的 ...

  5. Python OOP(1):从基础开始

    本文旨在Python复习和总结: 1.如何创建类和实例? # 创建类 class ClassName(object): """docstring for ClassNam ...

  6. python学习------面向对象的程序设计

    一 面向对象的程序设计的由来 1940年以前:面向机器 最早的程序设计都是采用机器语言来编写的,直接使用二进制码来表示机器能够识别和执行的指令和数 据.简单来说,就是直接编写 和 的序列来代表程序语言 ...

  7. 【转】Python之面向对象与类

    [转]Python之面向对象与类 本节内容 面向对象的概念 类的封装 类的继承 类的多态 静态方法.类方法 和 属性方法 类的特殊成员方法 继承层级关系中子类的实例对象对属性的查找顺序问题 一.面向对 ...

  8. what's the python之面向对象

    编程分为面向过程和面向对象,首先我们要了解什么是面向对象. 面向对象 面向过程就是我们之前学的内容,主要是函数式,其核心是过程,过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全 ...

  9. <转>Python OOP(1):从基础开始

    转自  http://www.cnblogs.com/BeginMan/p/3510786.html 本文旨在Python复习和总结: 1.如何创建类和实例? # 创建类 class ClassNam ...

随机推荐

  1. HDU1085 Holding Bin-Laden Captive!

    Description We all know that Bin-Laden is a notorious terrorist, and he has disappeared for a long t ...

  2. mysql+gtid主从同步

    安装mysql  yum install mysql-community-client-5.7.17-1.el6.x86_64.rpm mysql-community-common-5.7.17-1. ...

  3. python 字符串的特性

    #######str字符串#####str字符判断大小写  url1 = 'http://www.cctv.com'  url2 = 'file:///mnt'  print url1.startsw ...

  4. Linux中apache服务

    httpd访问控制生成共享文件vim var/www/html/cq/index.html编辑配置文件 vim /etc/httpd/conf/httpd.conf<Directory &quo ...

  5. Go语言基础之3--时间和日期序列

    一.时间和日期类型 1. time包 2. time.Time类型,用来表示时间 3. 获取当前时间, now := time.Now() 实例1-1  打印输出当前时间 package main i ...

  6. IIS Express 无法启动

    IIS Express 无法启动1. \.vs\config\applicationhost.config2. 打开.csproject 中把 <UseIIS> 改成 False ---- ...

  7. hdfs namenode/datanode工作机制

    一. namenode工作机制 1. 客户端上传文件时,namenode先检查有没有同名的文件,如果有,则直接返回错误信息.如果没有,则根据要上传文件的大小以及block的大小,算出需要分成几个blo ...

  8. [转]LazyLoad.js及scrollLoading.js

    本文转自:http://blog.csdn.net/ning109314/article/details/7042829 目前图片延迟加载主要分两大块,一是触发加载(根据滚动条位置加载图片):二是自动 ...

  9. LeetCode 110.平衡二叉树(C++)

    给定一个二叉树,判断它是否是高度平衡的二叉树. 本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1. 示例 1: 给定二叉树 [3,9,20,null,nu ...

  10. pat04-树5. File Transfer (25)

    04-树5. File Transfer (25) 时间限制 150 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue We have ...