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 获取本机ip地址的两个方法
Feb 25 Python
python开发利器之ulipad的使用实践
Mar 16 Python
python版本的仿windows计划任务工具
Apr 30 Python
django.db.utils.ProgrammingError: (1146, u“Table‘’ doesn’t exist”)问题的解决
Jul 13 Python
Flask框架web开发之零基础入门
Dec 10 Python
如何爬取通过ajax加载数据的网站
Aug 15 Python
Python字典的概念及常见应用实例详解
Oct 30 Python
flask框架json数据的拿取和返回操作示例
Nov 28 Python
python 安装教程之Pycharm安装及配置字体主题,换行,自动更新
Mar 13 Python
Python xlwt模块使用代码实例
Jun 10 Python
通俗易懂了解Python装饰器原理
Sep 17 Python
Python实战之用tkinter库做一个鼠标模拟点击器
Apr 27 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中ID设置自增后不连续的原因分析及解决办法
2016/08/21 PHP
php mysql PDO 查询操作的实例详解
2017/09/23 PHP
PHP实现的贪婪算法实例
2017/10/17 PHP
任意位置显示html菜单
2007/02/01 Javascript
检测jQuery.js是否已加载的判断代码
2011/05/20 Javascript
contains和compareDocumentPosition 方法来确定是否HTML节点间的关系
2011/09/13 Javascript
js中有关IE版本检测
2012/01/04 Javascript
购物车选中得到价格实现示例
2014/01/26 Javascript
JS操作HTML自定义属性的方法
2015/02/10 Javascript
浅谈angularjs $http提交数据探索
2017/01/20 Javascript
微信小程序实现带刻度尺滑块功能
2017/03/29 Javascript
vue实现留言板todolist功能
2017/08/16 Javascript
vue实现文字横向无缝走马灯组件效果的实例代码
2019/04/09 Javascript
node.js中事件触发器events的使用方法实例分析
2019/11/23 Javascript
[01:08:30]DOTA2-DPC中国联赛 正赛 Ehome vs Elephant BO3 第一场 2月28日
2021/03/11 DOTA
Python跳出循环语句continue与break的区别
2014/08/25 Python
Python解析树及树的遍历
2016/02/03 Python
Python基于list的append和pop方法实现堆栈与队列功能示例
2017/07/24 Python
浅谈Python中的私有变量
2018/02/28 Python
python 3.7.0 安装配置方法图文教程
2018/08/27 Python
python之cv2与图像的载入、显示和保存实例
2018/12/05 Python
对python 通过ssh访问数据库的实例详解
2019/02/19 Python
python对象销毁实例(垃圾回收)
2020/01/16 Python
美国第一大药店连锁机构:Walgreens(沃尔格林)
2019/10/10 全球购物
长青弘远的面试题
2012/06/09 面试题
写clone()方法时,通常都有一行代码,是什么?
2012/10/31 面试题
乔迁宴答谢词
2014/01/21 职场文书
开学季活动策划方案
2014/02/28 职场文书
优秀少先队员主要事迹材料
2014/05/28 职场文书
2014年挂职干部工作总结
2014/12/06 职场文书
2014年党总支工作总结
2014/12/18 职场文书
美丽人生观后感
2015/06/03 职场文书
《确定位置》教学反思
2016/02/18 职场文书
nginx 防盗链防爬虫配置详解
2021/03/31 Servers
Java实战之课程信息管理系统的实现
2022/04/01 Java/Android
速龙x4-860k处理器相当于i几
2022/04/20 数码科技