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

在设计类的过程中,若想要类表现出一些特殊行为或者能够响应某些内建函数或操作符,那么就需要构建一些特殊方法。这些特殊方法的标识是方法名以双下划线(__)开头和结尾;除了常用的构造器__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)

删除属性





你可能感兴趣的:(python)