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中的with...as用法介绍
May 28 Python
Python中functools模块的常用函数解析
Jun 30 Python
Python2.7基于笛卡尔积算法实现N个数组的排列组合运算示例
Nov 23 Python
Python中join函数简单代码示例
Jan 09 Python
python调用staf自动化框架的方法
Dec 26 Python
解决Django加载静态资源失败的问题
Jul 28 Python
Python3常用内置方法代码实例
Nov 18 Python
kafka-python 获取topic lag值方式
Dec 23 Python
Python如何使用字符打印照片
Jan 03 Python
基于python实现微信好友数据分析(简单)
Feb 16 Python
Pycharm中安装wordcloud等库失败问题及终端通过pip安装的Python库如何添加到Pycharm解释器中(推荐)
May 10 Python
解决TensorFlow程序无限制占用GPU的方法
Jun 30 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的图形函数中显示汉字
2006/10/09 PHP
使用bcompiler对PHP文件进行加密的代码
2010/08/29 PHP
php重定向的三种方法分享
2012/02/22 PHP
php截取中文字符串不乱码的方法
2013/12/25 PHP
php读取excel文件示例分享(更新修改excel)
2014/02/27 PHP
PHP基于单例模式编写PDO类的方法
2016/09/13 PHP
PHP后台微信支付和支付宝支付开发
2017/04/28 PHP
jQuery库与其他JS库冲突的解决办法
2010/02/07 Javascript
location.href 在IE6中不跳转的解决方法与推荐使用代码
2010/07/08 Javascript
intro.js 页面引导简单用法 分享
2013/08/06 Javascript
jquery自动将form表单封装成json的具体实现
2014/03/17 Javascript
Jquery倒计时源码分享
2014/05/16 Javascript
javascript的动态加载、缓存、更新以及复用(一)
2014/06/09 Javascript
jquery中trigger()无法触发hover事件的解决方法
2015/05/07 Javascript
给before和after伪元素设置js效果的方法
2015/12/04 Javascript
Node.js的Web模板引擎ejs的入门使用教程
2016/06/06 Javascript
JS判断iframe是否加载完成的方法
2016/08/03 Javascript
搭建简单的nodejs http服务器详解
2017/03/09 NodeJs
Vue-Router实现组件间跳转的三种方法
2017/11/07 Javascript
JavaScript 对引擎、运行时、调用堆栈的概述理解
2018/10/22 Javascript
vue+Vue Router多级侧导航切换路由(页面)的实现代码
2018/12/20 Javascript
jQuery实现简单飞机大战
2020/07/05 jQuery
详谈python3中用for循环删除列表中元素的坑
2018/04/19 Python
python版本五子棋的实现代码
2018/12/11 Python
Python实现字符串匹配的KMP算法
2019/04/04 Python
5款Python程序员高频使用开发工具推荐
2019/04/10 Python
python面试题之列表声明实例分析
2019/07/08 Python
python使用装饰器作日志处理的方法
2019/07/11 Python
python 读取数据库并绘图的实例
2019/12/03 Python
利用CSS3制作简单的3d半透明立方体图片展示
2017/03/25 HTML / CSS
《翻越远方的大山》教学反思
2014/04/13 职场文书
部门群众路线教育实践活动对照检查材料思想汇报
2014/10/07 职场文书
学校领导四风问题整改措施思想汇报
2014/10/09 职场文书
参观邀请函范文
2015/02/02 职场文书
Nginx配置https原理及实现过程详解
2021/03/31 Servers
golang elasticsearch Client的使用详解
2021/05/05 Golang