定制类:
①__str__:创建实例打印的时候,若打印该实例可以打印一个好看的字符串
class Student(object):
def __init__(self, name):
self._name = name
def __str__(self):
return 'Student Object (name: %s)' % self._name
__repr__ = __str__ # __str__()返回用户看到的字符串,而__repr__()返回程序开发者看到的字符串,也就是说,__repr__()是为调试服务的
print(Student('Michael'))
s = Student('Michael')
print(s)
②__iter__:可以让class类用于for…in…循环,不断迭代__next__方法
class Fib(object):
def __init__(self):
self.a, self.b = 0, 1 # 初始化两个计数器a,b
def __iter__(self):
return self # 实例本身就是迭代对象,故返回自己
def __next__(self):
self.a, self.b = self.b, self.a + self.b # 计算下一个值
if self.a > 1000000: # 退出循环的条件
raise StopIteration()
return self.a # 返回下一个值
for i in Fib():
print(i)
③__getitem__:可以让class像list一样根据下标取到元素
class Fib(object):
def __getitem__(self, n):
if isinstance(n, int): # n是索引
a, b = 1, 1
for i