1.方法就是函数,def后面的就是方法
属性就是def init(self, name):
self.name = name
name就是属性
2.iter
可以将类用于for循环
例:斐波那契数列
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 > 100000: # 退出循环的条件
raise StopIteration()
return self.a # 返回下一个值
for n in Fib():
print(n)
# def __iter__(self):
# return self # 实例本身就是迭代对象,故返回自己
#没有这一行会报错,错误是返回的不是可迭代的对象
结果
1
1
2
3
5
8
13
21
34
55
89
144
233
377
610
987
1597
2584
4181
6765
10946
17711
28657
46368
75025
- getitem
将类中元素切片出来
class Fib(object):
def __getitem__(self, n):
a, b = 1, 1
for x in range(n):
a, b = b, a + b
return print(a)
s=Fib()
s[2]
s[1]