小甲鱼零基础学习python_25 【python中类的一些相关BIF】


1. issubclass(class,classinfo):如果第一个参数是第二个参数的子类,则返回True

但是是非严格的检查,因为一个类会被认为是自身的子类

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

如果第二个不是类或者类对象组成的元组,抛出TypeError异常

class A:
    pass
class B(A):
    pass
class C:
    pass

print(issubclass(B,A))
print(issubclass(B,B))
print(issubclass(B,object))  #object是所有类的子类
print(issubclass(B,C))
(object是所有类的子类)

这里写图片描述


2. isinstance(object,classinfo):检查一个实例对象是否属于一个类,是的话,返回True

第一个参数是实例对象,第二个是一个类

classinfo可以是类对象组成的元组

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

如果第二个不是类或者类对象组成的元组,抛出TypeError异常

b1=B()
print(isinstance(b1,B))
print(isinstance(b1,A))   #因为B继承于A
print(isinstance(b1,C))
print(isinstance(b1,(A,B,C)))

这里写图片描述


3.1 hasattr(object,name)

测试一个object对象是否有指定的属性name (name需要用字符串括起来)


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

这里写图片描述

3.2 getattr(object,name[,default])

返回对象指定属性的值,如果有default,则会返回default,否则抛出异常

print(getattr(c1,'x'))
print(getattr(c1,'x','您所访问的属性不存在...'))

这里写图片描述

3.3 setattr(object,name,value)

设置对应对象里相应属性的值,如果属性不存在,则新建属性并赋值

setattr(c1,'y',5)
print(getattr(c1,'y'))

这里写图片描述

3.4 delattr(object,name)

删除对象里指定的属性,如果属性不存在则抛出异常

delattr(c1,'y')
# delattr(c1,'y')  #属性不存在则抛出异常

3.4 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.x)   #直接调用第一个方法

c1.x=18   #直接调用第二个参数的方法
print(c1.size)

del c1.x
# print(c1.size)   #已经找不到了

这里写图片描述


猜你喜欢

转载自blog.csdn.net/Aka_Happy/article/details/82221293
今日推荐