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数据结构之Array用法实例
Oct 09 Python
python用reduce和map把字符串转为数字的方法
Dec 19 Python
Python之str操作方法(详解)
Jun 19 Python
Python实现OpenCV的安装与使用示例
Mar 30 Python
使用TensorFlow实现二分类的方法示例
Feb 05 Python
flask框架配置mysql数据库操作详解
Nov 29 Python
python如何通过pyqt5实现进度条
Jan 20 Python
解决python父线程关闭后子线程不关闭问题
Apr 25 Python
踩坑:pytorch中eval模式下结果远差于train模式介绍
Jun 23 Python
Python文件夹批处理操作代码实例
Jul 21 Python
手把手教你怎么用Python实现zip文件密码的破解
May 27 Python
Django中session进行权限管理的使用
Jul 09 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
77A一级收信机修理记
2021/03/02 无线电
php实现基于openssl的加密解密方法
2016/09/30 PHP
深入理解PHP的远程多会话调试
2017/09/21 PHP
PHP时间处理类操作示例
2018/09/05 PHP
微信JSSDK分享功能图文实例详解
2019/04/08 PHP
防止页面被iframe(兼容IE,Firefox火狐)
2010/07/04 Javascript
基于jQuery的投票系统显示结果插件
2011/08/12 Javascript
通过JS获取用户本地图片路径并显示的代码
2012/02/16 Javascript
js时间比较示例分享(日期比较)
2014/03/05 Javascript
淘宝网提供的国内NPM镜像简介和使用方法
2014/04/17 Javascript
iframe跨域通信封装详解
2015/08/11 Javascript
JS+CSS实现鼠标滑过时动态翻滚的导航条效果
2015/09/24 Javascript
javascript同步服务器时间和同步倒计时小技巧
2015/09/24 Javascript
js实现下拉列表选中某个值的方法(3种方法)
2015/12/17 Javascript
分析js闭包引起的事件注册问题
2016/03/29 Javascript
Javascript基于jQuery UI实现选中区域拖拽效果
2016/11/25 Javascript
JavaScript实现瀑布流以及加载效果
2017/02/11 Javascript
Bootstrap table使用方法记录
2017/08/23 Javascript
使用JS获取SessionStorage的值
2018/01/12 Javascript
vue.js实现二级菜单效果
2019/10/19 Javascript
Vue父子组件传值的一些坑
2020/09/16 Javascript
Openlayers实现图形绘制
2020/09/28 Javascript
centos下更新Python版本的步骤
2013/02/12 Python
python del()函数用法
2013/03/24 Python
Python3实现连接SQLite数据库的方法
2014/08/23 Python
Python Datetime模块和Calendar模块用法实例分析
2019/04/15 Python
在python中用url_for构造URL的方法
2019/07/25 Python
python读写csv文件并增加行列的实例代码
2019/08/01 Python
解决安装pyqt5之后无法打开spyder的问题
2019/12/13 Python
python deque模块简单使用代码实例
2020/03/12 Python
美国孕妇装品牌:Destination Maternity
2018/02/04 全球购物
网上书店创业计划书
2014/01/12 职场文书
机械工程学院大学生求职信
2014/05/25 职场文书
听证会主持词
2015/07/03 职场文书
Python基础之条件语句详解
2021/06/16 Python
python双向链表实例详解
2022/05/25 Python