您的位置:首页 > 编程语言 > Python开发

【Python基础】Python面向对象 - 4 - 定制类的特殊方法

2015-09-11 01:37 856 查看
在设计类的过程中,若想要类表现出一些特殊行为或者能够响应某些内建函数或操作符,那么就需要构建一些特殊方法。这些特殊方法的标识是方法名以双下划线(__)开头和结尾;除了常用的构造器__init__()外,还有一些常用的特殊方法:

参考:http://www.pythontip.com/blog/post/5225/

基础方法

__new__(self, [arg2,... ...])

构造器(带一些可选的参数);通常用在设置不可变数据类型的子类

__del__(self)

析构函数

__str__(self)

可打印的字符串输出;内建str()及pring()函数

__repr__(self)

运行时的字符串输出;内建repr()函数及‘’操作符

__len__(self)

长度;内建len()

类的属性

__getattr__(self, name)

获取属性;内建getattr();仅在属性没有找到时调用

__setattr__(self, name, value)

设置属性.

示例:

class Book(object):
def __setattr__(self, name, value):
if name == 'value':
object.__setattr__(self, name, value - 100)
else:
object.__setattr__(self, name, value)
def __getattr__(self, name):
try:
return object.__getattribute__(name)
except:
return name + ' is not found!'
def __str__(self):
return self.name + ' cost : ' + str(self.value)

c = Book()
c.name = 'Python'
c.value = 100
print c.name
print c.value
print c
print c.Type


输出:

Python
0
Python cost : 0
Type is not found!


__getattribute__(self, name)

获取属性;内建getattr();总是被调用

__delattr__(self,attr)

删除属性
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: