Python 中的类的相关操作
构造函数
构造函数是任何类都有的特殊方法。当要创建一个类时,就要调用构造函数。他的名字是__init__。init的前后分别是两个下划线。时间类Time的构造函数如下:
>>> class Time:
... def __init__(self , hours = 0 , minutes = 0 , seconds = 0):
... self.hours = hours;
... self.mintues = minutes;
... self.seconds = seconds;
...
... def printTime(self):
... print str(self.hours)
...
...
...
>>> now = Time(12,12,43)
>>> now
<__main__.Time instance at 0x1783cf8>
>>> now.printTime()
12
>>>
操作符重定义
>>> class RMB:
... def __init__(self,sum = 0.0):
... self.sum = sum;
...
... def __str__(self):
... return str(self.sum);
...
...
...
>>> a = RMB()
>>> b = RMB()
>>> a + b
Traceback (most recent call last):
File "<input>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'instance' and 'instance'
>>
我们定义了一个RMB类,然后生成两个实例,这两个实例相加后,显示了一条错误信息,表示实例不能进行相加操作。错误信息的意思是,加发操作暂时不支持两个实例操作数。
为了使类的实例也可以进行数学操作,我们需要在类的内部重定义新定义的数学操作符,使之支持用户定义的数据类型。很多人会立即意识到这不是C++中的操作符重载吗?在这里我们没有重载这个词。因为C++中的重载比Python中的重定义的概念范围要广的很多,因此,我们使用重定义这个词。下面我们修改这个RMB的类添加__add__ 和__sub__操作
>>> class RMB:
... def __init__(self , sum = 0.0):
... self.sum = sum;
...
... def __str__(self):
... return str(self.sum);
...
... def __add__(self , other):
... return RMB(self.sum + other.sum);
...
... def __sub__(self,other):
... return RMB(self.sum - other.sum);
...
...
...
>>> a = RMB(100)
>>> b = RMB(343)
>>> a + b
<__main__.RMB instance at 0x1783e60>
>>> print a + b
443
>>> print a.__add__(b) , a + b
443 443
>>>
Python 中的类的相关操作的更多相关文章
- Python中的字符串及其相关操作
1.表示: 字符串可以用单引号或者双引号括起来,两者效果是完全一样的. 针对较长的字符串,也可以用三个引号括起来,即"""..."""或者' ...
- 026.Python面向对象类的相关操作以及对象和类的删除操作
类的相关操作 定义的类访问共有成员的成员和方法 定义的类动态添加公有成员的属性和方法 定义的类删除公有成员的属性和方法 1 定义一个基本的类 #定义一个类 class Plane(): #添加一个共有 ...
- 4、Python中的类详解(0601)
<大话数据结构>的作者程杰在博客园也有博客,网址是:http://cj723.cnblogs.com/ 面向对象编程(OOP) 1.程序 = 指令 + 数据 代码可以选择以指令为核心或以数 ...
- python中的类和实例
今天花了两个多小时后搜索相关博客看了看python中有关类和实例的介绍,差不多大概明白了. python中的类和c++中的类是一样的,不同之处就是c++的类,如果含有成员变量,并且成员变量发生变化后, ...
- Python中的类(上)
在Python中,可以通过class关键字定义自己的类,然后通过自定义的类对象类创建实例对象. 例如,下面创建了一个Student的类,并且实现了这个类的初始化函数"__init__&quo ...
- Python中的文件和目录操作实现
Python中的文件和目录操作实现 对于文件和目录的处理,虽然可以通过操作系统命令来完成,但是Python语言为了便于开发人员以编程的方式处理相关工作,提供了许多处理文件和目录的内置函数.重要的是,这 ...
- python中的类与继承
Class 类的定义以及实例的建立 Python中,类通过 class 关键字定义. 例如最简单的一个类定义可以为: class Person(object): pass Python 的编程习惯,类 ...
- Python中json的简单读写操作
Python中json的简单读写操作 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. JSON采用完全独立于语言的 ...
- python中元类(metaclass)的理解
原文地址:http://www.cnblogs.com/tkqasn/p/6524879.html 一:类也是对象 类就是一组用来描述如何生成一个对象的代码. 类也是一个对象,只要你使用关键字clas ...
随机推荐
- Android最新源码4.3下载-教程 2013-11
Android最新源码4.3下载-教程 有的下载会出现问题: 需要 修改manifest.xml中的fetch: "git://Android.git.linaro.org/" ...
- ios7下二维码功能的实现
苹果公司升级到IOS7后自己的PassBook自带二维码扫描功能,所以现在使用二维码功能不需要在借助第三方库了 使用前请先导入AVFoundation.frameWork // // YHQView ...
- FastStone Capture(FSCapture) 注册码 _图形图像_软件教程_脚本之家
FastStone Capture(FSCapture) 注册码 _图形图像_软件教程_脚本之家 FastStone Capture 注册码 序列号: name/用户名:TEAM JiOO key/注 ...
- c++隐藏实例
隐藏:是指派生类的函数屏蔽了与其同名的基类函数,规则如下:(1)如果派生类的函数与基类的函数同名,但是参数不同.此时,不论有无virtual关键字,基类的函数将被隐藏(注意别与重载混淆). 很简单略去 ...
- applicationContext.xml详解
http://blog.csdn.net/heng_ji/article/details/7022171
- MyEclipse8.5 中安装Spket插件
MyEclipse8.5 中安装Spket插件 安装: 1. Myeclipse8.5安装和以前低版本有些不同(没有software updates). 点击help->Myeclipse Co ...
- docker学习笔记11:Dockerfile 指令 CMD介绍
我们知道,通过docker run 创建并启动一个容器时,命令的最后可以指定容器启动后在容器内立即要执行的指令,如: docker run -i -t ubunu /bin/bash //表示容器 ...
- Android学习笔记:adb 与 adb shell操作 以及中文乱码解决
1.安装app >adb install xxx.apk 2.卸载app >adb uninstall app的包路径 如:>adb uninstall com.example.my ...
- 转:javascript面向对象编程
作者: 阮一峰 日期: 2010年5月17日 学习Javascript,最难的地方是什么? 我觉得,Object(对象)最难.因为Javascript的Object模型很独特,和其他语言都不一样,初学 ...
- perl 5.22手动安装Mysql DBI和DBD
mysql 手动安装DBI 和DBD: DBI版本: [root@dr-mysql01 DBD-mysql-4.033]# perl -MDBI -le 'print $DBI::VERSION;' ...