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采用requests库模拟登录和抓取数据的简单示例
Jul 05 Python
Python实现测试磁盘性能的方法
Mar 12 Python
用Python的Flask框架结合MySQL写一个内存监控程序
Nov 07 Python
python文件操作相关知识点总结整理
Feb 22 Python
django批量导入xml数据
Oct 16 Python
python 调用HBase的简单实例
Dec 18 Python
Python工程师面试必备25条知识点
Jan 17 Python
python @property的用法及含义全面解析
Feb 01 Python
python输出带颜色字体实例方法
Sep 01 Python
Python基于Tensor FLow的图像处理操作详解
Jan 15 Python
使用python 的matplotlib 画轨道实例
Jan 19 Python
python 基于UDP协议套接字通信的实现
Jan 22 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
3种平台下安装php4经验点滴
2006/10/09 PHP
一步一步学习PHP(1) php开发环境配置
2010/02/15 PHP
php5 non-thread-safe和thread-safe这两个版本的区别分析
2010/03/13 PHP
PHP CLI模式下的多进程应用分析
2013/06/03 PHP
PHP把空格、换行符、中文逗号等替换成英文逗号的正则表达式
2014/05/04 PHP
详解php中反射的应用
2016/03/15 PHP
thinkPHP微信分享接口JSSDK用法实例
2017/07/07 PHP
Javascript开发包大全整理
2006/12/22 Javascript
IE6、IE7中setAttribute不支持class/for/rowspan/colspan等属性
2011/08/28 Javascript
jQuery的Ajax的自动完成功能控件简要说明
2013/02/22 Javascript
node.js中的fs.futimesSync方法使用说明
2014/12/17 Javascript
JS如何实现文本框随文本的长度而增长
2015/07/30 Javascript
总结jQuery插件开发中的一些要点
2016/05/16 Javascript
详解Node全局变量global模块
2017/09/28 Javascript
Koa2 之文件上传下载的示例代码
2018/03/29 Javascript
bootstrap下拉框动态赋值方法
2018/08/10 Javascript
Bootstrap Table实现定时刷新数据的方法
2018/08/13 Javascript
梳理一下vue中的生命周期
2020/12/30 Vue.js
[54:27]TNC vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
python从ftp下载数据保存实例
2013/11/20 Python
Python version 2.7 required, which was not found in the registry
2014/08/26 Python
一些常用的Python爬虫技巧汇总
2016/09/28 Python
python如何在列表、字典中筛选数据
2018/03/19 Python
对python numpy数组中冒号的使用方法详解
2018/04/17 Python
python实现身份证实名认证的方法实例
2019/11/08 Python
详解python opencv、scikit-image和PIL图像处理库比较
2019/12/26 Python
用python批量移动文件
2021/01/14 Python
python批量提取图片信息并保存的实现
2021/02/05 Python
html5构建触屏网站之touch事件介绍
2013/01/07 HTML / CSS
基于Html5 canvas实现裁剪图片和马赛克功能及又拍云上传图片 功能
2019/07/09 HTML / CSS
玛蒂尔达简服装:Matilda Jane Clothing
2019/02/13 全球购物
探索欧洲最好的品牌:Bombinate
2019/06/14 全球购物
写自荐信有哪些不宜?
2013/10/17 职场文书
大学生工作求职信
2014/06/23 职场文书
安全演讲稿开场白
2014/08/25 职场文书
2016圣诞节贺卡寄语
2015/12/07 职场文书