目录
简单定制
定制一个计时器 start和stop方法代表启动计时和停止计时 假设计时器对象t1,print(t1)和直接调用t1均显示结果 当计时器未启动或已经停止计时,调用stop方法会给予温馨提示 两个计时器对象可以进行相加:t1+t2 只能使用提供的有限资源完成
>> > t1= MyTimer( )
>> > t1
未开始计时
>> > t1. stop( )
提示:请先调用start( ) 开始计时!
>> > t1. start( )
计时开始. . .
>> > t1. stop( )
计时结束!
>> > t1
总共运行了3 秒
>> > t2= MyTimer( )
>> > t2. start( )
计时开始. . .
>> > t2
总共运行了5 秒
>> > t1+ t2
总共运行了8 秒
>> > class A ( ) :
def _str_ ( self) :
return "Python"
>> > a= A( )
>> > print ( a)
Python
>> > a
< _main_. A object at 0x02C409F0 >
>> > class B ( ) :
def _repr_ ( self) :
return "Python"
>> > b= B( )
>> > b
Python
import time as t
class MyTime
def start ( self) :
self. start= t. localtime( )
print ( "计时开始..." )
def stop ( self) :
self. stop= t. localtime( )
print ( "计时结束!" )
def _calc ( self) :
self. lasted= [ ]
self. prompt= "总共运行了"
for index in range ( 6 ) :
self. lasted. append( self. stop[ index] - self. start[ index] )
self. prompt+= str ( self. lasted[ index] )
print ( self. prompt)
属性访问
class C :
def _init_ ( self) :
self. x= 'X-man'
>> > c= C( )
>> > c. x
'X-man'
>> > getattr ( c, 'x' , '没有属性' )
'X-man'
>> > getattr ( c, 'y' , '没有属性' )
'没有属性'
描述符
描述符就是将某种特殊类型的类的实例指派给另一个类的属性 _ get_(self,instance,owner) 用于访问属性,他返回属性的值 _ set_(self,instance,owner) 将在属性分配操作中调用,不返回任何内容 _ delete_(self,instance) 控制删除操作,不返回任何内容
定制序列
容器类型协议
如果定制容器不可变,只需要定义_ len_()和_ getitem_()方法 如果定制容器可变,除了_len_()()和_ getitem_()方法,还要定义_ setitem()和_ delitem_()两个方法
迭代器
iter() iter () 返回迭代器本身 next() _ 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( )
>> > for each in fibs:
print ( each)
1
1
2
3
5
8