#############面向对象#####################

类:

In [1]: class MyClass(object):         ##用class定义一个类
...: def pstar(self):
...: print '*'*20
...: In [2]: a = MyClass() ##创建一个实例对象,跟java相似 In [3]: a.pstar() ##通过实例对象,调用类里面的方法,这里的相当于把实例对象’a‘传递给self,作为pstar的参数了,所以不报错,self 是可以是任何东西,习惯写self
********************

In [4]: MyClass.pstar(a)    #####
  ********************

#####################类的组合###########################

#!/usr/bin/env python
#-*- coding:utf-8 -*- class Info(object):
def __init__(self,ph,em,qq):
self.phone = ph
self.email = em
self.qq = qq
def get_phone(self):
return self.phone
def update_phone(self,newph):
self.phone = newph
class AddrBook():
def __init__(self,nm,ph,em,qq):
self.name = nm
self.info = Info(ph,em,qq)
if __name__ == '__main__':
bob = AddrBook("Bob Green",'','bob@qq.com','')
print bob.info.get_phone()

效果:

C:\Python27\python2.exe D:/pycharm/pa/addbook2.py
15980113980
Bob Green

####################类的继承###################

#!/usr/bin/env python
#-*- coding:utf-8 -*- class AddBook(object):
def __init__(self,nm,ph):
self.name = nm
self.phone = ph
def get_name(self):
return self.name
def get_phone(self):
return self.phone
class Add(AddBook):
pass
if __name__ == '__main__':
bob = Add('Bob Green','')
print bob.get_phone()
print bob.get_name()

效果:

C:\Python27\python2.exe D:/pycharm/pa/addbook.py
15980113990
Bob Green
#!/usr/bin/env python
#-*- coding:utf-8 -*- class AddBook(object):
def __init__(self,nm,ph):
self.name = nm
self.phone = ph
def get_name(self):
return self.name
def get_phone(self):
return self.phone
class Add(AddBook):
def __init__(self,nm,ph,id):
self.id = id
AddBook.__init__(self,nm,ph) #####继承 if __name__ == '__main__':
bob = Add('Bob Green','','')
print bob.get_phone()
print bob.get_name()
print bob.id

效果:

C:\Python27\python2.exe D:/pycharm/pa/addbook.py
15980113990
Bob Green
350823199900616671

额外:

##########__str__##############

#!/usr/bin/env python
#-*- coding:utf-8 -*- class Book():
def __init__(self,tt,bb):
self.tt = tt
self.bb = bb
def __str__(self):
return self.tt if __name__ == '__main__':
playbook = Book('fush','hua')
print playbook ###因为类中定义了__str__方法,直接通过实例对象返回值

结果:

C:\Python27\python2.exe D:/pycharm/pa/book.py
fush

############__call__################

#!/usr/bin/env python
#-*- coding:utf-8 -*- class Book():
def __init__(self,tt,bb):
self.tt = tt
self.bb = bb
def __str__(self):
return self.tt
def __call__(self):
print '%s %s' % (self.tt,self.bb) if __name__ == '__main__':
playbook = Book('fush','hua')
print playbook #因为类中定义了__str__方法,此处打印出的是__str__的返回值
playbook() #调用playbook就是执行__call__方法中的代码

今日最后:

In [8]: import ftplib

In [9]: ftplib.__file__
Out[9]: '/usr/lib64/python2.6/ftplib.pyc'
[root@master ~]# vim /usr/lib64/python2.6/ftplib.py

python 基础之第十一天(面向对象)的更多相关文章

  1. Python基础笔记系列十一:标准输入输出、文件读写和指针等操作

    本系列教程供个人学习笔记使用,如果您要浏览可能需要其它编程语言基础(如C语言),why?因为我写得烂啊,只有我自己看得懂!! 标准输入输出一.输入 在sublime中这个时候需要安装SublimeRE ...

  2. Python基础(二十一):面向对象“类”第四课——魔法方法

    先划一下重点: 6个魔法方法: 动态操作属性的4个函数: 魔法方法 魔法方法的简单介绍 魔法方法的命名规则:方法名(前后各有2个下划线). 通常情况下,不会主动去调用魔法方法,而是在满足一定的条件下, ...

  3. python学习笔记-(十一)面向对象进阶&异常处理

    上篇我们已经了解了一些面向对象的基础知识,本次就了解下面向对象的一些进阶知识(虽然我也不知道有什么卵用). 静态方法 静态方法是一种普通函数,就位于类定义的命名空间中,它不会对任何实例类型进行操作.使 ...

  4. Python基础入门(6)- 面向对象编程

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

  5. Py修行路 python基础 (十五)面向对象编程 继承 组合 接口和抽象类

    一.前提回忆: 1.类是用来描述某一类的事物,类的对象就是这一类事物中的一个个体.是事物就要有属性,属性分为 1:数据属性:就是变量 2:函数属性:就是函数,在面向对象里通常称为方法 注意:类和对象均 ...

  6. Py修行路 python基础 (十六)面向对象编程的 继承 多态与多态性 封装

    一.继承顺序: 多继承情况下,有两种方式:深度优先和广度优先 1.py3/py2 新式类的继承:在查找属性时遵循:广度优先 继承顺序是多条分支,按照从左往右的顺序,进行一步一步查找,一个分支走完会走另 ...

  7. Python基础(18)_面向对象程序设计2(反射、__str__、__del__、__item__系列)

    一 isinstance(obj,cls)和issubclass(sub,super) isinstance(obj,cls)检查是否obj是否是类 cls 的对象 class Foo(object) ...

  8. Python基础(17)_面向对象程序设计(抽象类、继承原理、封装、多态,绑定方法)

    一.抽象类 抽象类是一个特殊的类,它的特殊之处在于只能被继承,不能被实例化 1.在python中实现抽象类 import abc #利用abc模块实现抽象类 class All_file(metacl ...

  9. Python基础(16)_面向对象程序设计(类、继承、派生、组合、接口)

    一.面向过程程序设计与面向对象程序设计 面向过程的程序设计:核心是过程,过程就解决问题的步骤,基于该思想设计程序就像是在设计一条流水线,是一种机械式的思维方式 优点:复杂的问题的简单化,流程化 缺点: ...

随机推荐

  1. cocos2d-x 事件分发机制 ——触摸事件监听

    cocos2d-x 3.0 出来已经好久了,也已经用3.0写了几个小游戏,感觉3.0的事件触发机制太赞了,随这里总结一下.也算是对知识的一种回顾和加深理解. 3.0的事件分发机制中.须要也只须要通过创 ...

  2. [反汇编练习] 160个CrackMe之033

    [反汇编练习] 160个CrackMe之033. 本系列文章的目的是从一个没有任何经验的新手的角度(其实就是我自己),一步步尝试将160个CrackMe全部破解,如果可以,通过任何方式写出一个类似于注 ...

  3. SSH 原理和公匙私匙

    先主要介绍了Telnet.SSH 的通信原理,分析了其通信时的工作流程. Telnet 无论Telnet协议连接的是什么类型终端,都会转换为NVT(Net Virtual Terminal)格式进行通 ...

  4. Java中字符串转为16进制表示

    Java中字符串转为16进制表示 String str = "鲸"; char[] chars = "0123456789ABCDEF".toCharArray ...

  5. 非常不错的ajax原理总结

    在工作中用了Ajax N多次了,也看过一些相关方面的书籍,也算是认识了它,但是一直没有认真总结和整理过相关的东东,失败!近有闲情,将之总结如下:[名称]Ajax是Asynchronous JavaSc ...

  6. flex操作XML,强力总结帖

    初始化XML对象 XML对象可以代表一个XML元素.属性.注释.处理指令或文本元素.在ActionScript 3.0中我们可以直接将XML数据赋值给变量: var myXML:XML =    &l ...

  7. pycharm5.0 激活方式

    Pycharm5注册方式   0x1 ,安装 0x2 , 调整时间到2038年. 0x3 ,申请30天试用 0x4, 退出pycharm 0x5, 时间调整回来. ##注册方法2### 注册方法:   ...

  8. professional cuda c programming--CUDA库简单介绍

    CUDA Libraries简单介绍   上图是CUDA 库的位置.本文简要介绍cuSPARSE.cuBLAS.cuFFT和cuRAND.之后会介绍OpenACC. cuSPARSE线性代数库,主要针 ...

  9. (转载)JavaScript递归查询 json 树 父子节点

    在Json中知道某个属性名,想要确定该属性在Json树具体的节点,然后进行操作还是很麻烦的 可以用以下方法找到该属性所在的节点,和父节点 <!DOCTYPE html> <html ...

  10. 模式识别之不变矩---SIFT和SURF的比较