Python程序设计入门(5)类的使用简介


Posted in Python onJune 16, 2014

一、类的定义和使用

python定义一个类的基本语法是:

class classname([基类一,基类二...]):
    [def __init__(self, [agv1,agv2...]):]  # 定义构造函数
    def method1(self, [agv1,agv2...]):  # 成员函数

   
使用时用:

对象实例名 = 类名(参数列表)

对象实例名.成员函数名(参数列表)

和其它语言不同之处是:

(1) python没有new关键字
(2) 成员函数必须带有 self 参数(它相当于传统语言里的 this )
(3) 成员变量不需要显式定义,不过为了方便起见,大多数人还是会在构造函数里定义,以免过于莫名其妙。
例:

# -*- coding: gb18030 -*-
class mycls:
    def __init__(self, vl, vr):
        self.l = vl
        self.r = vr
    def show_me(self):
        print x.l, x.r
x = mycls(3, 15)
x.show_me()

二、高级应用

1、成员函数类型变量

python 可以直接把一个成员函数作为一个变量,就上面的类而言,可以这样:

x = mycls(3, 15)
myx = x.show_me()
print 'I am a copy!\n'
myx

2、继承和多继承

要继承其它类,定义时指定要继承的基类即可
class classname([基类一,基类二...]):

3、私有成员

python实际上并没有私有成员的概念,不过如果把变量名定义为 ___var (三个下划线)这样系统会自动把名称改为 _classname___var,

这个值可以用 self.___var 读取(因为会一起替换),但在外部是无法用  obj.___var 读取的。

如:

class test_cls:
    def __init__(self):
        self.___aaa = 'I am a python!'
    def test_func(self):
        print self.___aaa
#这种方法能输出正确结果
x = test_cls()
x.test_func()
#下面这种方法会报错!
x = test_cls()
print x.___aaa

三、迭代器 和 发生器

在 python 中,很多东西都是可以用 for 来遍历的,实际是这个东西的实现是通过迭代器或发生器来实现的

1、迭代器

class Reverse:
    def __init__(self, data):
        self.data = data
        self.index = len(data)    def __iter__(self):
        return self
    def next(self):
        if self.index == 0:
            raise StopIteration
        self.index = self.index - 1
        return self.data[self.index]

#应用
for cin Reverse('spam'):
    print c

这里的重点是 __iter__ 和 next 两个函数,使用  next 时,用  raise StopIteration 指定遍历结束。

2、发生器

发生器实际是用单独一个函数实现被遍历的源
在发生器函数中, 用 yield varname 返回每次被遍历的元素即可
例:

def reverse(data):
    for index in range(len(data)-1, -1, -1):
        yield data[index]for c in reverse('golf'):
    print c

至此,python的基本语法也说得差不多了,至于其它一些隐秘的东西,需要大家实际操作去发现了。

Python 相关文章推荐
Python函数嵌套实例
Sep 23 Python
python连接字符串的方法小结
Jul 13 Python
python使用arcpy.mapping模块批量出图
Mar 06 Python
python中的set实现不重复的排序原理
Jan 24 Python
python实现雨滴下落到地面效果
Jun 21 Python
Python WEB应用部署的实现方法
Jan 02 Python
Django基础知识 URL路由系统详解
Jul 18 Python
对python中的float除法和整除法的实例详解
Jul 20 Python
python自动发微信监控报警
Sep 06 Python
django 利用Q对象与F对象进行查询的实现
May 15 Python
Python如何基于Tesseract实现识别文字功能
Jun 05 Python
VSCODE配置Markdown及Markdown基础语法详解
Jan 19 Python
Python程序设计入门(4)模块和包
Jun 16 #Python
Python程序设计入门(3)数组的使用
Jun 16 #Python
Python程序设计入门(2)变量类型简介
Jun 16 #Python
Python程序设计入门(1)基本语法简介
Jun 13 #Python
Python对两个有序列表进行合并和排序的例子
Jun 13 #Python
用Python输出一个杨辉三角的例子
Jun 13 #Python
Python 的 with 语句详解
Jun 13 #Python
You might like
使用zend studio for eclipse不能激活代码提示功能的解决办法
2009/10/11 PHP
PHP zlib扩展实现页面GZIP压缩输出
2010/06/17 PHP
使用Thinkphp框架开发移动端接口
2015/08/05 PHP
Laravel实现自定义错误输出内容的方法
2016/10/10 PHP
thinkphp框架page类与bootstrap分页(美化)
2017/06/25 PHP
PHP实现绘制二叉树图形显示功能详解【包括二叉搜索树、平衡树及红黑树】
2017/11/16 PHP
Javascript 不能释放内存.
2006/09/07 Javascript
Javascript 加载和执行-性能提高篇
2012/12/28 Javascript
Js与下拉列表处理问题解决
2014/02/13 Javascript
基于jquery实现的文字向上跑动类似跑马灯的效果
2014/06/17 Javascript
非常实用的js验证框架实现源码 附原理方法
2016/06/08 Javascript
Bootstrap modal使用及点击外部不消失的解决方法
2016/12/13 Javascript
JavaScript ES6中export、import与export default的用法和区别
2017/03/14 Javascript
Three.js中矩阵和向量的使用教程
2019/03/19 Javascript
JS实现移动端在线签协议功能
2019/08/22 Javascript
微信小程序页面调用自定义组件内的事件详解
2019/09/12 Javascript
JS面向对象编程基础篇(一) 对象和构造函数实例详解
2020/03/03 Javascript
Python解析命令行读取参数--argparse模块使用方法
2018/01/23 Python
对numpy.append()里的axis的用法详解
2018/06/28 Python
PyQt5实现暗黑风格的计时器
2019/07/29 Python
python Opencv计算图像相似度过程解析
2019/12/03 Python
opencv设置采集视频分辨率方式
2019/12/10 Python
详解Python修复遥感影像条带的两种方式
2020/02/23 Python
Python函数参数定义及传递方式解析
2020/06/10 Python
如何快速理解python的垃圾回收机制
2020/09/01 Python
Python批量修改xml的坐标值全部转为整数的实例代码
2020/11/26 Python
CSS3 icon font完全指南(CSS3 font 会取代icon图标)
2013/01/06 HTML / CSS
浅谈HTML5 & CSS3的新交互特性
2016/07/19 HTML / CSS
法国一家芭蕾舞鞋公司:Repetto
2018/11/12 全球购物
Joseph官网:英国小众奢侈品牌
2019/05/17 全球购物
高中生家长会演讲稿
2014/01/14 职场文书
马云北大演讲完整版:真心话,什么才是阿里的核心竞争力?
2014/04/04 职场文书
高中生国庆节演讲稿范文2014
2014/09/21 职场文书
2016春季运动会通讯稿
2015/07/18 职场文书
求职自我评价参考范文
2019/05/16 职场文书
MySQL实现用逗号进行拼接、以逗号进行分割
2022/12/24 MySQL