您的位置:首页 > 其它

Day8之面向对象复习2

2017-11-28 23:14 281 查看
#!/usr/bin/python3
# -*-coding:UTF-8-*-

class Student(object):
def __init__(self, name):
self.name = name

def __str__(self):
return '学生名称:%s' % self.name

# 定义__str__()方法后的输出
print(Student('xiaomeng'))

# __iter__()
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)

# __getitem__
class Fib1(object):
def __getitem__(self, n):
a, b = 0 ,1
for x in range(n):
a, b = b, a + b
return a

print(Fib1()[1])

# __getattr__
class Student(object):
def __init__(self):
self.name = 'xiaomeng'

def __getattr__(self, attr):
if attr == 'score':
return 95
def __call__(self):
print('名称:%s' % self.name)
stu = Student()
print(stu.name)
print(stu.score)

# __call__直接在实例本身调用
stu()

# 判断一个是否可以调用Callable
print(callable(stu))
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  DAY