当拿到一个对象是,如何知道对象是什么类型、有哪些方法呢?
1、判断对象类型,使用type()函数,返回type类型:
基本类型都可以
>>>type(123) <type 'int'>
一个变量指向函数或类,也可以判断:
>>>type(abs) <type 'method'>
>>>type(a) <class '_main_.animal'>
2、isinstance():对于class的继承关系来说,使用type()不方便,我们判断class的类型,可以使用isinstance()函数
>>>isinstance(h,Animal) True 说明变量h是Animal类的类型
3、dir():获得一个对象的所有属性和方法,它返回一个包含字符串的list
>>>dir('ABC') ['replace','rjust'........]
--------------------------------------------------------------------------------------
Python内置类属性
1、__dict__ :类的属性(包含一个字典,由类的数据属性组成)
2、__doc__ :类的文档字符串
3、__name__ :类名
4、__module__ :类定义所在的模块
5、__bases__ :类的所有父类构成元素
eg:employee.__name__ 打印employee类名
employee.__bases__ 打印employee的所有父类
-------------------------------------------------------------------------------------
__init__
1、__init__ 并不相当于c#的构造函数,执行它的时候,实例已经构造出来了
class A(object):
def __init__(self,name):
self.name=name
def getName(self):
return 'A'+self.name
当执行a = A('hello')时,
可以理解为
a=object.__new__(A)
A.__init__(a,'hello') 即__init__作用是初始化已实例化后的对象
2、子类可以不重写__init__,实例化子类时,会自动调用超类中已定义的__init__
若重写了__init__,实例化子类时,则不会隐式的再去调用超类中已定义的__init__
---------------------------------------------------------------------------------------