类、实例及其他对象的内建函数

函数:issubcalss(sub,sup)
描述:如果类sub是类sup的子类,则返回True,否则返回False
实例

>>> class C1():pass
...
>>> class C2():pass
...
>>> class p(C1):pass
...
>>> issubclass(p,C1)
True
>>> issubclass(p,C2)
False

函数:isinstance(obj1,obj2)
描述:如果实例obj1是类obj2或obj2子类的一个实例;或者如果obj1是obj2的类型,则返回True,反之则为False
实例

>>> x = C1()
>>> y = p()
>>> isinstance(x,C1)
True
>>> isinstance(y,p)
True
>>> isinstance(y,C1)
True
>>> isinstance(1,int)
True

函数:hasattr(obj,attr)
描述:如果obj有属性attr(用字符串给出),返回True,反之False
实例

>>> hasattr(y,"foo")
False
>>> y.foo = 100
>>> hasattr(y,"foo")
True

函数:getattr(obj,attr[,default])
描述:获取obj的attr属性,如果attr不是obj的属性,如果有默认值则提供默认值,若没有则引发一个AttributeError异常
实例
注:若attr不是obj的属性,不会创建该属性

>>> getattr(y,"foo")
100
>>> getattr(y,"bar")
Traceback (most recent call last):
  File "", line 1, in <module>
AttributeError: 'p' object has no attribute 'ba
r'
>>> getattr(y,"bar",200)
200
>>> y.__dict__
{'foo': 100}

函数:setattr(obj,attr,val)
描述:设置obj的attr属性为val,替换任何已存在的属性值,不然就创建属性,类似obj.attr=val
实例

>>> setattr(y,"bar",3000)
>>> y.__dict__
{'foo': 100, 'bar': 3000}
>>> setattr(y,"bar",10)
>>> y.__dict__
{'foo': 100, 'bar': 10}

函数:dalattr(obj,attr)
描述:从obj中删除属性attr(以字符串给出):类似于del obj.attr
实例

>>> delattr(y,"bar")
>>> y.__dict__
{'foo': 100}

函数:dir(obj=None)
描述:返回obj的属性的一个列表,如果没有给定obj,dir()则显示局部名字空间中的属性。
实例

>>> dir(y)
['__class__', '__delattr__', '__dict__', '__dir
__', '__doc__', '__eq__', '__format__', '__ge__
', '__getattribute__', '__gt__', '__hash__', '_
_init__', '__init_subclass__', '__le__', '__lt_
_', '__module__', '__ne__', '__new__', '__reduc
e__', '__reduce_ex__', '__repr__', '__setattr__
', '__sizeof__', '__str__', '__subclasshook__',
 '__weakref__', 'foo']
>>> dir()
['C1', 'C2', '__annotations__', '__builtins__',
 '__doc__', '__loader__', '__name__', '__packag
e__', '__spec__', 'p', 'y']

函数:super(type,obj=None)
描述:返回一个表示父类类型的代理对象。如果没有传入obj,则返回super对象是非绑定的;反之,如果obj是一个type,issubclass(obj,type)必定为True,反则isinstance(obj,type)必为True
实例

>>> super(C1,p)
<super: <class 'C1'>, <p object>>
>>> super(C1)
<super: <class 'C1'>, NULL>
>>> super(C1,y)
<super: <class 'C1'>, <p object>>
>>> super(C1,p)
<super: <class 'C1'>, <p object>>
>>> super(p)
<super: <class 'p'>, NULL>

函数:vars(obj=None)
描述:返回obj的属性及值得字典,如果没有给出obj,则显示局部名字空间字典
实例

>>> vars()
{'__name__': '__main__', '__doc__': None, '__pa
ckage__': None, '__loader__': <class '_frozen_i
mportlib.BuiltinImporter'>, '__spec__': None, '
__annotations__': {}, '__builtins__': <module '
builtins' (built-in)>, 'C1': <class '__main__.C1'>, 'C2':
 <class '__main__.C2'>, 'y': <__main__.p object
 at 0x00000209D3F23400>, 'p': <class '__main__.
p'>}
>>> vars(y)
{'foo': 100}

你可能感兴趣的:(python)