类和对象:相关的BIF

一、issubclass(class,classinfo):如果说第一个参数是第二个参数的子类则返回true

注意:一个类会被认为是自身的子类;classinfo 可以是类对象组成的元祖,只要class是其中

任何一个候选类的子类,则返回true

class A:
    pass

class B(A):
    pass

print(issubclass(B,A))#结果True
print(issubclass(B,B))#结果True
print(issubclass(B,object))#结果True
class C:
    pass
print(issubclass(B,C))#结果False
print(issubclass(B,(A,C)))#结果True

二、isinstance(object,classinfo):检查一个实例对象是否属于一个类,classinfo可以为元祖

 注意:如果第一个参数不是对象,则永远返回False

如果第二个参数不是类或者由类对象组成的元祖,会抛出一个TypeError异常

class A:
    pass

class B(A):
    pass
class C:
    pass
b1 = B()
print(isinstance(b1,B))#结果:True
print(isinstance(b1,A))#结果:True
print(isinstance(b1,C))#结果:False


三、hasattr(object,name):测试object对象里面是否有指定的name属性

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

c1 = C()
print(hasattr(c1,'x'))#结果:True 其中x必须要用引号否则报错


四、getattract(object,name[,default]):返回对象指定的属性值,如果

指定的属性值不存在,如果此时设定了default参数,则会将default参数打印出来

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

c1 = C()
print(hasattr(c1,'x'))#结果:True 其中x必须要用引号否则报错
print(getattr(c1,'x'))#结果0print(getattr(c1,'xd','您所访问的属性不存在'))#结果:您所访问的属性不存在

五、setattr(object,name,value):设置对象指定属性值,如果指定的属性不存在

那么会新建立一个属性并赋值

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

c1 = C()
print(hasattr(c1,'x'))#结果:True 其中x必须要用引号否则报错
print(getattr(c1,'x'))#结果0print(getattr(c1,'xd','您所访问的属性不存在'))#结果:您所访问的属性不存在
setattr(c1,'xd','hjah')
print(getattr(c1,'xd','您所访问的属性不存在'))#结果:hjah

六、delattr(object,name):删除对象中的属性

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

c1 = C()
print(hasattr(c1,'x'))#结果:True 其中x必须要用引号否则报错
print(getattr(c1,'x'))#结果0print(delattr(c1,'x'))#结果None
print(delattr(c1,'x'))#存在就会删除,不存在则报错 print(delattr(c1,'x'))  AttributeError: x
#为了避免delattr 报错,可以先通过hasattr来检测属性是否存在,存在则进行删除
七、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()
print(c1.getSize())#结果:10
print(c1.x,'----------')#结果:10
c1.setSize(12)#size赋值为12
print(c1.getSize())#结果:12
print(c1.x,'----------')#结果:12
c1.x = 22#size赋值为22
print(c1.getSize())#结果:22
print(c1.x,'----------')#结果:22
del c1.x#删除
print(c1.x,'----------')#结果报错:AttributeError: 'C' object has no attribute 'size'


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值