获得对象信息
使用 dir() 可以获得一个对象的所有属性与方法,例如:
>>> dir('ABC')['__add__', '__class__',..., '__subclasshook__', 'capitalize', 'casefold',..., 'zfill']
修改内置函数
类似__xxx__的属性和方法在Python中都是有特殊用途的,比如__len__方法返回长度。
实际上,在len()函数内部,它自动去调用该对象的__len__()方法,所以,下面的代码是等价的:
>>> len('ABC')3>>> 'ABC'.__len__()3
我们可以自定义一个特定的类来演示这一点:
class Test(object):def __init__(self,name):self._name=namedef __len__(self):return len(self._name)+100def __str__(self):return 'Test:'+self._name>>> a=Test('ZhangSan')>>> len(a)108>>> print(a)Test:ZhangSan
给实例绑定方法
下面展示如何给实例绑定一个方法:
def set_age(self,age):self.age=age>>> from types import MethodType>>> s.set_age=MethodType(set_age,s)>>> s.set_age(25)>>> s.age25
但是该方法对于新的实例还得重新定义一次,如果要给所有实例都绑定该方法,就得给class绑定:
>>> def set_score(self, score):... self.score = score...>>> Student.set_score = set_score
给实例绑定属性
给实例绑定属性是简单的,但有时候我们需要对能绑定的属性进行限制,这需要通过 slots 方法:
class Student(object):__slots__ = ('name', 'age')
