获取对象的信息
使用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__函数中。
实例属性的优先级高于类属性,不要让实例属性与类属性名字相同,否则实例属性的值会覆盖类属性的值。
浙公网安备 33010602011771号