构造和析构
class Rectangle:
def __init__(self, x, y):
self.x = x
#self.x是类实例化之后的实例对象的局部变量 x是参数
self.y = y
def getPeri(self): #周长
return (self.x + self.y) * 2
def getArea(self): #面积
return self.x * self.y
rect = Rectangle(3, 4)
print("rect的面积是", rect.getArea())
print("rect的面积是", rect.getPeri())
效果如下
rect = Rectangle(3, 4)
print("rect的面积是", rect.getArea())
12
print("rect的周长是", rect.getPeri())
14
算术运算
http://edu.csdn.net/course/detail/906/12835?auto_start=1
属性访问
描述符property
定制序列
定制序列
容器类型的协议
不可变的容器 len(self) 和 getitem(self, key)
可变的容器 除了len() 和 getitem() 还需要定制 setitem(self, key, value) 和 delitem(self, key)
迭代器
简介:简单来说就是循环。
先来用for 目标 in 表达式:来看看循环的效果
for i in "AJ":
print(i)
links = {'AJ很帅':'帅帅帅!', 'AJ很酷':'酷酷酷!'}
for each in links:
print("%s → %s" % (each, links[each]))
效果如下
A
J
AJ很帅 → 帅帅帅!
AJ很酷 → 酷酷酷!
如果用内置迭代函数iter和next
class Fibs:
def __init__(self, n = 10):
self.a = 0
self.b = 1
self.n = n
def __iter__(self):
return self
def __next__(self):
self.a, self.b = self.b, self.a + self.b
if self.a > self.n:
raise StopIteration
return self.a
fibs = Fibs(100)
for each in fibs:
print(each)
效果如下
1
1
2
3
5
8
13
21
34
55
89