40:类和对象4(BIF)

一、判断类、子类、对象关系的BIF

1. issubclass(class, classinfo)   返回布尔型

classinfo可以是类对象组成的元组,只要class与其中任何一个候选类的子类一致,就返回True

>>> class A:
    pass

>>> class B(A):
    pass

>>> issubclass(B,A)
True
>>> issubclass(B,B)
True
>>> issubclass(B, object)
True
>>> class C:
    pass

>>> issubclass(B, C)
False
>>> 

2.isinstance(object, classinfo)

classinfo可以是类对象组成的元组,只要object是其中任何一个候选类的对象,就返回True

>>> issubclass(B, C)
False
>>> b = B()
>>> isinstance(b , B)
True
>>> isinstance(b , A)
True
>>> 

若B是A的子类,则B的实例化对象b也是A的实例化对象

二、属性相关的BIF

3.hasattr(object,  name)  查看实例化对象是否具有某属性,name必须为字符串

>>> class C:
    def __init__(self, x=0):
        self.x = x

        
>>> c = C()
>>> hasattr(c, 'x')
True
>>> 

4.getattr(object, name[, default])

>>> getattr(c, 'x')
0
>>> getattr(c,'y', '您所访问的属性不存在' )
'您所访问的属性不存在'
>>> 

5.setattr(object, name, value)

>>> setattr(c, 'y', '1234')
>>> getattr(c, 'y')
'1234'
>>> 

6.delattr(object, name)

>>> delattr(c, 'u')
>>> delattr(c, 'u')
Traceback (most recent call last):
  File "<pyshell#38>", line 1, in <module>
    delattr(c, 'u')
AttributeError: u

7. property(fget = None, fset = None, fdel = None)

>>> class C:
    def __init__(self, size = 10):
        self.size = size
    def getsize(self):
        return self.size
    def setsize(self, value):
        self.size = value
    def delsize(self):
        del self.size
    x = property(getsize, setsize, delsize)

    
>>> c = C()
>>> c.x
10
>>> c.x = 18
>>> c.x
18
>>> del c.x
>>> 

需要在类中定义读取属性的方法fget, 设置属性的方法fset,删除属性的方法fdel,将属性归于property并传给x,将x提供给用户调用,当类中方法名需要更改时,用户调用属性无需改变,c.x即可调用属性。  

猜你喜欢

转载自blog.csdn.net/weixin_41004521/article/details/81394842
今日推荐