Python类的专用方法实例分析
admin
2023-07-31 02:10:19
0

本文实例讲述了Python类的专用方法。分享给大家供大家参考。具体分析如下:

Python 类可以定义专用方法,专用方法是在特殊情况下或当使用特别语法时由 Python 替你调用的,而不是在代码中直接调用(象普通的方法那样)。

1. __init__

类似于构造函数

复制代码 代码如下:#!/usr/local/bin/python
class Study:
        def __init__(self,name=None):
                self.name = name
        def say(self):
                print self.name
study = Study(\”Badboy\”)
study.say()
2. __del__

类似于析构函数

复制代码 代码如下:#!/usr/local/bin/python
class Study:
        def __init__(self,name=None):
                self.name = name
        def __del__(self):
                print \”Iamaway,baby!\”
        def say(self):
                print self.name
study = Study(\”zhuzhengjun\”)
study.say()
3. __repr__

使用repr(obj)的时候,会自动调用__repr__函数,该函数返回对象字符串表达式,
用于重建对象,如果eval_r(repr(obj))会得到一个对象的拷贝。

复制代码 代码如下:#!/usr/local/bin/python
class Study:
        def __init__(self,name=None):
                self.name = name
        def __del__(self):
                print \”Iamaway,baby!\”
        def say(self):
                print self.name
        def __repr__(self):
                return \”Study(\’jacky\’)\”
study = Study(\”zhuzhengjun\”)
study.say()
print type(repr(Study(\”zhuzhengjun\”))) # str
print type(eval_r(repr(Study(\”zhuzhengjun\”)))) # instance
study = eval_r(repr(Study(\”zhuzhengjun\”)))
study.say()
4. __str__

Python能用print语句输出内建数据类型。有时,程序员希望定义一个类,要求它的对象也能用print语句输出。Python类可定义特殊方法__str__,为类的对象提供一个不正式的字符串表示。如果类的客户程序包含以下语句:

复制代码 代码如下:print objectOfClass
那么Python会调用对象的__str__方法,并输出那个方法所返回的字符串。
复制代码 代码如下:#!/usr/local/bin/python
class PhoneNumber:
        def __init__(self,number):
                 self.areaCode=number[1:4]
                 self.exchange=number[6:9]
                 self.line=number[10:14]
        def __str__(self):
                return \”(%s) %s-%s\”%(self.areaCode,self.exchange,self.line)
def test():
         newNumber=raw_input(\”Enter phone number in the form. (123) 456-7890: \\n\”)
         phone=PhoneNumber(newNumber)
         print \”The phone number is:\”
         print phone
if__name__==\”__main__\”:
         test()

方法__init__接收一个形如\”(xxx) xxx-xxxx\”的字符串。字符串中的每个x都是电话号码的一个位数。方法对字符串进行分解,并将电话号码的不同部分作为属性存储。
方法__str__是一个特殊方法,它构造并返回PhoneNumber类的一个对象的字符串表示。解析器一旦遇到如下语句:

复制代码 代码如下:print phone
就会执行以下语句:
复制代码 代码如下:print phone.__str__()
程序如果将PhoneNumber对象传给内建函数str(如str(phone)),或者为PhoneNumber对象使用字符串格式化运算符%(例如\”%s\”%phone),Python也会调用__str__方法。
5. __cmp __

比较运算符,0:等于 1:大于 -1:小于

复制代码 代码如下:class Study:
     def __cmp__(self, other):
         if other > 0 :
             return 1
         elif other < 0:
             return – 1
         else:
             return 0
study = Study()
if study > -10:print \’ok1\’
if study < -10:print \’ok2\’
if study == 0:print \’ok3\’
打印:ok2 ok3

说明:在对类进行比较时,python自动调用__cmp__方法,如-10 < 0 返回 -1,也就是说study 应该小与 -10,估打印ok2

6. __getitem__

__getitem__ 专用方法很简单。象普通的方法 clear,keys 和 values 一样,它只是重定向到字典,返回字典的值。

复制代码 代码如下:class Zoo:
     def __getitem__(self, key):
         if key == \’dog\’:return \’dog\’
         elif key == \’pig\’:return  \’pig\’
         elif key == \’wolf\’:return \’wolf\’
         else:return \’unknown\’
zoo = Zoo()
print zoo[\’dog\’]
print zoo[\’pig\’]
print zoo[\’wolf\’]
打印:
dog pig wolf

7. __setitem__

__setitem__ 简单地重定向到真正的字典 self.data ,让它来进行工作。

复制代码 代码如下:class Zoo:
     def __setitem__(self, key, value):
         print \’key=%s,value=%s\’ % (key, value)
zoo = Zoo()
zoo[\’a\’] = \’a\’
zoo[\’b\’] = \’b\’
zoo[\’c\’] = \’c\’
打印:
key=a,value=a
key=b,value=b
key=c,value=c

8. __delitem__

__delitem__ 在调用 del instance[key] 时调用,你可能记得它作为从字典中删除单个元素的方法。当你在类实例中使用 del 时,Python 替你调用 __delitem__ 专用方法。

复制代码 代码如下:class A:
     def __delitem__(self, key):
         print \’delete item:%s\’ %key
a = A()
del a[\’key\’]

希望本文所述对大家的Python程序设计有所帮助。

相关内容

热门资讯

500 行 Python 代码... 语法分析器描述了一个句子的语法结构,用来帮助其他的应用进行推理。自然语言引入了很多意外的歧义,以我们...
定时清理删除C:\Progra... C:\Program Files (x86)下面很多scoped_dir开头的文件夹 写个批处理 定...
65536是2的几次方 计算2... 65536是2的16次方:65536=2⁶ 65536是256的2次方:65536=256 6553...
Mobi、epub格式电子书如... 在wps里全局设置里有一个文件关联,打开,勾选电子书文件选项就可以了。
scoped_dir32_70... 一台虚拟机C盘总是莫名奇妙的空间用完,导致很多软件没法再运行。经过仔细检查发现是C:\Program...
小程序支付时提示:appid和... [Q]小程序支付时提示:appid和mch_id不匹配 [A]小程序和微信支付没有进行关联,访问“小...
pycparser 是一个用... `pycparser` 是一个用 Python 编写的 C 语言解析器。它可以用来解析 C 代码并构...
微信小程序使用slider实现... 众所周知哈,微信小程序里面的音频播放是没有进度条的,但最近有个项目呢,客户要求音频要有进度条控制,所...
python查找阿姆斯特朗数 题目解释 如果一个n位正整数等于其各位数字的n次方之和,则称该数为阿姆斯特朗数。 例如1^3 + 5...
Apache Doris 2.... 亲爱的社区小伙伴们,我们很高兴地向大家宣布,Apache Doris 2.0.0 版本已于...