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利用beautifulSoup实现爬虫
Sep 29 Python
Python httplib模块使用实例
Apr 11 Python
python使用in操作符时元组和数组的区别分析
May 19 Python
python模拟表单提交登录图书馆
Apr 27 Python
Django框架自定义session处理操作示例
May 27 Python
python实现通过队列完成进程间的多任务功能示例
Oct 28 Python
Python通过Manager方式实现多个无关联进程共享数据的实现
Nov 07 Python
Python自带的IDE在哪里
Jul 01 Python
Django自定义YamlField实现过程解析
Nov 11 Python
python 中 .py文件 转 .pyd文件的操作
Mar 04 Python
python如何正确使用yield
May 21 Python
Python turtle编写简单的球类小游戏
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 SQLite类
2009/05/07 PHP
ThinkPHP分页类使用详解
2014/03/05 PHP
使用ThinkPHP的自动完成实现无限级分类实例详解
2016/09/02 PHP
PHP实现验证码校验功能
2017/11/16 PHP
PHP数组去重的更快实现方式分析
2018/05/09 PHP
PHP+redis实现的限制抢购防止商品超发功能详解
2019/09/19 PHP
用javascript实现的图片马赛克后显示并切换加文字功能
2007/04/21 Javascript
一个关于javascript匿名函数的问题分析
2012/03/30 Javascript
图片img的src不变让浏览器重新加载实现方法
2013/03/29 Javascript
PHP开发者必须掌握的6个关键字
2014/04/14 Javascript
利用js制作html table分页示例(js实现分页)
2014/04/25 Javascript
Javascript学习笔记之 对象篇(三) : hasOwnProperty
2014/06/24 Javascript
jQuery中extend函数的实现原理详解
2015/02/03 Javascript
详解js中构造流程图的核心技术JsPlumb(2)
2015/12/08 Javascript
用window.onerror捕获并上报Js错误的方法
2016/01/27 Javascript
select隐藏选中值对应的id,显示其它id的简单实现方法
2016/08/25 Javascript
如何使用jquery实现文字上下滚动效果
2016/10/12 Javascript
JS多物体实现缓冲运动效果示例
2016/12/20 Javascript
jquery实现转盘抽奖功能
2017/01/06 Javascript
使用Node.js写一个代码生成器的方法步骤
2019/05/10 Javascript
[51:32]Optic vs Serenity 2018国际邀请赛淘汰赛BO3 第一场 8.22
2018/08/23 DOTA
使用PYTHON接收多播数据的代码
2012/03/01 Python
进一步理解Python中的函数编程
2015/04/13 Python
python进行两个表格对比的方法
2018/06/27 Python
对numpy中二进制格式的数据存储与读取方法详解
2018/11/01 Python
在python image 中安装中文字体的实现方法
2019/08/22 Python
Python+Redis实现布隆过滤器
2019/12/08 Python
Keras搭建自编码器操作
2020/07/03 Python
英国办公用品商店:Office Outlet
2018/04/04 全球购物
GoPro摄像机美国官网:美国运动相机厂商
2018/07/03 全球购物
四年级下册教学反思
2014/02/01 职场文书
幼儿园毕业园长感言
2014/02/24 职场文书
互联网创业计划书写作技巧攻略
2014/03/23 职场文书
美术社团活动总结
2014/06/27 职场文书
励志演讲稿600字
2014/08/21 职场文书
买房协议书范本
2014/10/23 职场文书