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(菜鸟必看篇)
Jun 10 Python
python使用代理ip访问网站的实例
May 07 Python
python方法生成txt标签文件的实例代码
May 10 Python
Python实现快速计算词频功能示例
Jun 25 Python
深入浅析python 协程与go协程的区别
May 09 Python
Python对接六大主流数据库(只需三步)
Jul 31 Python
python颜色随机生成器的实例代码
Jan 10 Python
Python基于pandas爬取网页表格数据
May 11 Python
python正则表达式的懒惰匹配和贪婪匹配说明
Jul 13 Python
Python如何操作docker redis过程解析
Aug 10 Python
python中的垃圾回收(GC)机制
Sep 21 Python
Python利用FlashText算法实现替换字符串
Mar 31 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
php模拟socket一次连接,多次发送数据的实现代码
2011/07/26 PHP
使用php转义输出HTML到JavaScript
2015/03/27 PHP
WordPress中登陆后关闭登陆页面及设置用户不可见栏目
2015/12/31 PHP
兼容IE/Firefox/Opera/Safari的检测页面装载完毕的脚本Ext.onReady的实现
2009/07/14 Javascript
javaScript 关闭浏览器 (不弹出提示框)
2010/01/31 Javascript
在JavaScript中监听IME键盘输入事件
2011/05/29 Javascript
javascript在myeclipse中报错的解决方法
2013/10/29 Javascript
JS实现点击链接取消跳转效果的方法
2014/01/24 Javascript
javascript实现复制与粘贴操作实例
2014/10/16 Javascript
JavaScript中的this关键字使用详解
2015/08/14 Javascript
基于jQuery实现文本框只能输入数字(小数、整数)
2016/01/14 Javascript
Zabbix添加Node.js监控的方法
2016/10/20 Javascript
读Javascript高性能编程重点笔记
2016/12/21 Javascript
原生JS实现导航下拉菜单效果
2020/11/25 Javascript
在vue-cli搭建的项目中增加后台mock接口的方法
2018/04/26 Javascript
Webpack devServer中的 proxy 实现跨域的解决
2018/06/15 Javascript
jQuery实现表单动态添加与删除数据操作示例
2018/07/03 jQuery
Angularjs实现页面模板清除的方法
2018/07/20 Javascript
react同构实践之实现自己的同构模板
2019/03/13 Javascript
javascript如何使用函数random来实现课堂随机点名方法详解
2020/07/28 Javascript
浅谈在vue-cli3项目中解决动态引入图片img404的问题
2020/08/04 Javascript
[02:27]刀塔重生降临
2015/10/14 DOTA
Python的__builtin__模块中的一些要点知识
2015/05/02 Python
解决python写入mysql中datetime类型遇到的问题
2018/06/21 Python
Python实现合并两个有序链表的方法示例
2019/01/31 Python
Python实现连接MySql数据库及增删改查操作详解
2019/04/16 Python
python 计算平均平方误差(MSE)的实例
2019/06/29 Python
实现Python3数组旋转的3种算法实例
2020/09/16 Python
基于HTML5+tracking.js实现刷脸支付功能
2020/04/16 HTML / CSS
巴西Mr. Cat在线商店:购买包包和鞋子
2019/09/08 全球购物
会计学个人自荐信模板
2013/12/13 职场文书
书香家庭事迹材料
2014/05/09 职场文书
营销团队口号
2014/06/06 职场文书
环境保护建议书
2014/08/26 职场文书
车辆年检委托书范本
2014/10/14 职场文书
医德医风个人工作总结2014
2014/11/14 职场文书