python 基础之第十一天(面向对象)

#############面向对象#####################
类:
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 基础之第十一天(面向对象)的更多相关文章
- Python基础笔记系列十一:标准输入输出、文件读写和指针等操作
本系列教程供个人学习笔记使用,如果您要浏览可能需要其它编程语言基础(如C语言),why?因为我写得烂啊,只有我自己看得懂!! 标准输入输出一.输入 在sublime中这个时候需要安装SublimeRE ...
- Python基础(二十一):面向对象“类”第四课——魔法方法
先划一下重点: 6个魔法方法: 动态操作属性的4个函数: 魔法方法 魔法方法的简单介绍 魔法方法的命名规则:方法名(前后各有2个下划线). 通常情况下,不会主动去调用魔法方法,而是在满足一定的条件下, ...
- python学习笔记-(十一)面向对象进阶&异常处理
上篇我们已经了解了一些面向对象的基础知识,本次就了解下面向对象的一些进阶知识(虽然我也不知道有什么卵用). 静态方法 静态方法是一种普通函数,就位于类定义的命名空间中,它不会对任何实例类型进行操作.使 ...
- Python基础入门(6)- 面向对象编程
1.初识面向对象 Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的.本篇随笔将详细介绍Python的面向对象编程. 如果你以前没有接触过面向对象 ...
- Py修行路 python基础 (十五)面向对象编程 继承 组合 接口和抽象类
一.前提回忆: 1.类是用来描述某一类的事物,类的对象就是这一类事物中的一个个体.是事物就要有属性,属性分为 1:数据属性:就是变量 2:函数属性:就是函数,在面向对象里通常称为方法 注意:类和对象均 ...
- Py修行路 python基础 (十六)面向对象编程的 继承 多态与多态性 封装
一.继承顺序: 多继承情况下,有两种方式:深度优先和广度优先 1.py3/py2 新式类的继承:在查找属性时遵循:广度优先 继承顺序是多条分支,按照从左往右的顺序,进行一步一步查找,一个分支走完会走另 ...
- Python基础(18)_面向对象程序设计2(反射、__str__、__del__、__item__系列)
一 isinstance(obj,cls)和issubclass(sub,super) isinstance(obj,cls)检查是否obj是否是类 cls 的对象 class Foo(object) ...
- Python基础(17)_面向对象程序设计(抽象类、继承原理、封装、多态,绑定方法)
一.抽象类 抽象类是一个特殊的类,它的特殊之处在于只能被继承,不能被实例化 1.在python中实现抽象类 import abc #利用abc模块实现抽象类 class All_file(metacl ...
- Python基础(16)_面向对象程序设计(类、继承、派生、组合、接口)
一.面向过程程序设计与面向对象程序设计 面向过程的程序设计:核心是过程,过程就解决问题的步骤,基于该思想设计程序就像是在设计一条流水线,是一种机械式的思维方式 优点:复杂的问题的简单化,流程化 缺点: ...
随机推荐
- 7.【nuxt起步】-Nuxt与后端数据交互
接下来就是对接服务端接口,展示真实的数据 1.做了个虚拟接口地址:http://test.yms.cn/testjson.asp 输出数据: { "title": "单间 ...
- 淘宝HSF 框架使用 总结
@(JAVA开发) 淘宝HSF 框架使用 总结 随着网站访问量增加,仅仅靠增加机器已不能满足系统的要求,于是需要对应用系统进行垂直拆分和水平拆分.在拆分之后,各个被拆分的模块如何通信?如何保证性能?如 ...
- C语言关键字—-sizeof 、typedef、const、static、register、extern、#define
关键字:sizeof .#define.typedef.const.static.register.extern sizeof 1. 作用:求数据所占得内存空间大小 2. 本质:求数据得类型所占的内存 ...
- hdparm - get/set SATA/IDE device parameters
hdparm(8) - Linux man page Name hdparm - get/set SATA/IDE device parameters Synopsis hdparm [ flags ...
- android IPC通信(上)-sharedUserId&&Messenger
看了一本书,上面有一章解说了IPC(Inter-Process Communication,进程间通信)通信.决定结合曾经的一篇博客android 两个应用之间的通信与调用和自己的理解来好好整理总结一 ...
- maven的坑2
导入工程后,pom.xml文件中以下插件报错: <plugin> <groupId>com.jayway.maven.plugins.android.generation2&l ...
- iOS开发---- 开发错误汇总及解决方法
本文转载至 http://blog.csdn.net/shenjx1225/article/details/8561695 一.今天调试程序的时候,出现了一个崩溃,信息如下: 2013-02-01 0 ...
- 【BZOJ4953】lydsy七月月赛 F DP
[BZOJ4953]lydsy七月月赛 F 题面 题解:设f[i][j]表示第i个强度取为j时的最小误差.那么每次转移时,我们只计算j'和j之间的像素点带来的误差,于是有: $f[i][j]=min( ...
- hdu5258简单枚举
百度之星复赛第一题.不明白这么水的题为何一堆人没过...这些人是咋晋级复赛的呢... /* * Author : ben */ #include <cstdio> #include < ...
- Java Virtual Machine (JVM) objects 虚拟机实例的产生 退出 两种线程
Apache Spark is built around a distributed collection of immutable Java Virtual Machine (JVM) object ...