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 ...
随机推荐
- Hadoop Hive与Hbase整合+thrift
Hadoop Hive与Hbase整合+thrift 1. 简介 Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句 ...
- BZOJ 1631: [Usaco2007 Feb]Cow Party
题目 1631: [Usaco2007 Feb]Cow Party Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 491 Solved: 362[Sub ...
- java学习之IO文件分割
package om.gh.homework; import java.io.*; /** * 实现分割文件; * @param file */ public class HomeWork { /** ...
- 【Eclipse】修改java代码不强制重启
找到tomcat的server.xml文件,修改以下代码,重新发布重启.然后修改java代码就可以不用重启了. 将reloadable=“true”改成reloadable="false&q ...
- 虚拟rethat联网问题
近日在vmware虚拟了一台rethat的linux,但是使用桥连也上不了网! 宿主机是win7,由于在公司,是采用固定ip上网的,通过上网查资料,终于可以连接网络了: 步骤如下: 第一:修改vi / ...
- c++子类和父类成员函数重名
子类和父类返回值参数相同,函数名相同,有virtual关键字,则由对象的类型决定调用哪个函数. 子类和父类只要函数名相同,没有virtual关键字,则子类的对象没有办法调用到父类的同名函数,父类的同名 ...
- form验证及图片上传
form验证及图片上传 这一节增加推荐图书的提交和删除功能,来学习node的form提交以及node的图片上传功能.开始之前需要源码同学可以先在git上fork:https://github.com/ ...
- 字符串如何判断null.
转http://blog.sina.com.cn/s/blog_48cd37140101awgq.html Java中判断String不为空的问题 一.判断一个字符串str不为空的方法有: 1. st ...
- TreePuzzle 一点感想
题目链接 这一道题看起来像是一道贪心的水题,但是情况较难考虑周全,比如下图,我就考虑漏了这种情况,点0是可以移动到点1的.然后我就各种奇怪的分类讨论.最终还是没能A,决定放弃治疗. 然后我看了看解答, ...
- 位操作 写读同步(无线) (语音1760 1700) ( 无线24l01)
************************************************************************** * 函数原型: unsigned char ISD ...