一、判断对象的类型方法小结:
1、 type:type(object)获取object的类型,types模块就是用来判断相关的数据类型!
2、 dir()获取对象的所有属性和方法。
3、 hasattr、getattr、setattr使用(判断的属性都是以字符串的形式)例子如下:
hasattr (tuple,‘append‘)
>>>False
例子:
getattr(list, ‘append‘,‘you are wrong!‘)
>>><method ‘append‘ of ‘list‘ objects>
getattr(tuple,‘append‘,‘i has no this‘)
>>>‘i has no this‘
4、isinstancede的使用
isinsitance(obj,type)
isinstance ([3,4,5] ,list)
>>>True
二、元类
1 ccc=type(‘ccc‘,(),{}) 2 3 cc=ccc() 4 5 type(cc) 6 7 <class ‘__main__.ccc‘> 8 9 cc.__class__() 10 11 <__main__.ccc object at 0x018D7530>
1 def fun():pass 2 3 CCCC=type(‘CCCC‘,(CCC,),{‘attr‘:True,‘fun‘:fun}) 4 5 class CCCC(CCC): 6 7 self.attr=True 8 9 self.fun=fun
实际上我们使用class关键词创建新式类时是调用了type函数来实现的。
三、被忽略的类方法
1 class A(object): 2 bar = 1 3 4 @classmethod 5 def class_foo(cls): 6 print ‘Hello, ‘, cls 7 print cls.bar 8 9 A.class_foo() # 直接通过类来调用方法 10 >>>Hello, <class ‘__main__.A‘> 11 >>>1
classmethod
装饰的方法由于持有 cls 参数,因此我们可以在方法里面调用类的属性、方法,比如 cls.bar
。静态方法可以被类和实例进行调用,而类方法一般被类调用!
原文:http://www.cnblogs.com/yongliang/p/6492981.html