1. slots 规定类中可以设置的属性
class ClassTest ( ) :
__slots__ = ( "name" , "age" )
pass
class ClassTestSon ( ClassTest) :
pass
classTestSon01 = ClassTestSon( )
classTestSon01. sex = "nan"
print ( classTestSon01. sex)
class ClassTestSon ( ClassTest) :
__slots__ = ( "sex" )
pass
classTestSon01 = ClassTestSon( )
classTestSon01. name = "name"
print ( classTestSon01. name)
2. str print类的实例是的操作
class ClassTest02 ( ) :
def __str__ ( self) :
return "ClassTest02 to str"
def __repr__ ( self) :
return "ClassTest02 to str"
__repr__= __str__
classTest02 = ClassTest02( )
print ( classTest02)
3.__iter__为类写了一个生成器,搭配__next__了()用于for…in…
class ClassTest03 ( object ) :
def __init__ ( self) :
self. a, self. b = 0 , 1
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 i in ClassTest03( ) :
print ( i)
4.__getattr__可以设置未定义变量的默认值
class ClassTest04 ( object ) :
def __init__ ( self, path= '' ) :
self. _path = path
def __getattr__ ( self, path) :
return ClassTest04( '%s/%s' % ( self. _path, path) )
def __str__ ( self) :
return self. _path
__repr__ = __str__
print ( ClassTest04( ) . status. user. timeline. list )
5.__call__在单独调用实例化的对象时实现的方法
class ClassTest05 ( ) :
def __init__ ( self, name) :
self. name = name
def __call__ ( self) :
return "ClassTest05{0}" . format ( self. name)
classTest05 = ClassTest05( "__call__" )
print ( classTest05( ) )
print ( ClassTest05)