获取对象的信息

使用type获取对象的类型,如下:

 1 class Animal(object): 
2     def run(self): 
3         print('Animal is running') 
4 class Dog(Animal): 
5     pass 
6 print(type(Animal())) 
7 print(type('123')) 
8 print(type(123)) 
9 print(type(None)) 

输出如下:

<class '__main__.Animal'>
<class 'str'>
<class 'int'>
<class 'NoneType'>

但是用type获取对象的类型再做比较十分不便,所以一般用isinstance()函数  

class Animal(object):
    def run(self):
        print('Animal is running')
class Dog(Animal):
    pass
print(type(Animal()))
print(type('123'))
print(type(123))
print(type(None))

print(isinstance(Animal(),Animal))
print(isinstance('123',str))
print(isinstance(123,int))

输出为:

<class '__main__.Animal'>
<class 'str'>
<class 'int'>
<class 'NoneType'>
True
True
True

还可以判断某个对象是否为列出的类型中的一种,如下:

print(isinstance((1,2,3),(list,tuple)))
输出:
True

使用dir()函数可以获取对象的所有属性与方法,还可以使用hasattr(对象,属性)来判断某个对象是否有某个属性,如hasattr(Animal(),'run'),还可以获取该对象的属性或者方法,如getattr(对象,属性或方法),还可以新增对象的属性,如setattr(对象,属性,设定值)  

 实例属性与类属性的区别

之前定义类的时候在__init__函数中定义的是实例属性,如果需要定义类的属性,该属性不随实例的产生而产生,只要定义了类就都存在,类似于静态函数的概念,那么就直接在类定义时予以确定,不需要放在__init__函数中。

实例属性的优先级高于类属性,不要让实例属性与类属性名字相同,否则实例属性的值会覆盖类属性的值。

 

  

 

 

  

 

 

  

 

posted on 2017-06-03 16:47  vonkimi  阅读(107)  评论(0编辑  收藏  举报

导航