40.类和对象:一些相关的BIF

一些相關BIF

issubclass(class, classing)

用来判断类参数class是否是类型参数classinfo的子类

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

isinstance(object, classinfo)

判斷 object 是否為 classinfo 的實體
1. 如果第一個參數不是對象,則永遠返回False
2. 如果第二個參數不是類或者由類對象組成的元祖,
會拋出一個TypeError異常

>>> b1 = B()
>>> isinstance(b1, B)
True
>>> isinstance(b1, A)
True
>>> isinstance(b1, C)
False
>>> isinstance(b1, (A,B,C))
True

hasattr(object, name)

判斷 name 是否為 object 的屬性名稱
attire = attribute:屬性

>>> class C:
        def __init__(self, x=0):
            self.x = x
>>> c1 = C()
>>> hasattr(c1, 'x')
True

getattr(object, name[, default])

如果存在name属性(方法)则返回name的值(方法地址)否则返回default值。

>>> getattr(c1, 'x')
0
>>> getattr(c1, 'y')
Traceback (most recent call last):
......
AttributeError: 'C' object has no attribute 'y'
>>> getattr(c1, 'y', '您所訪問的屬性不存在...')
'您所訪問的屬性不存在...'

setattr(object, name, value)

設定物件 object 的新屬性

>>> setattr(c1, 'y', 'kuangren')
>>> getattr(c1, 'y', '您所訪問的屬性不存在...')
'kuangren'

delattr(object, name)

该函数删除该obj的一个由string指定的属性

>>> delattr(c1, 'y')
>>> delattr(c1, 'y')
Traceback (most recent call last):
  File '<pyshell#31>', line 1, in <module>
    delattr(c1, 'y')
AttributeError: y

property(fget=None, fset=None, fdel=None, doc=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)

>>> c1 = C()
>>> c1.getSize()
10
>>> c1.x
10
>>> c1.x = 18
>>> c1.x
18
>>> c1.getsize()
18
>>> del c1.x
>>> c1.size
Traceback (most recent call last):
...
AttributeError: 'C' object has no attribute 'size' 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值