Python与类和对象相关的BIF(内置函数)

函数

  • 1.issubclass(class1,class2)

如果class1是class2的子类就返回True

注意:

     1.检查是非严格行的检查(一个类也是本身的子类)

      2.class2类对象组成的元组,只要class1是其中任何一个候选类的子类则返回True

      3.其他情况会抛出一个TypeError异常

class Person:
        pass
class Teacher:
        pass
class Student(Father,Monther):
    pass

result =issubclass(Student,Person)
result =issubclass(Student,(Teacher,Person))
  • 2.isinstance(class1,class2)

注意:

     1.如果第一个参数传的不是对象类型,则永远返回False

      2.第二个参数不是类或者不是由类组成的元组,则抛出一个TypeError的异常

      3.第一个参数是一个类的实例化对象,第二个是这个类对象时,返回True

class Teacher:
        pass

t =Teacher()

result =isinstance(t,Teacher)
result =isinstance(t,(TT,Teacher))
  • 3.hasattr(object,name)

查询对象是否有指定的属性

第一个是对象,第二个是属性名,用双引号串起来,否则报错

class Teacher:
            name ="zhangsan"
            def eat(self):
                print("吃饭")

t =Teacher()

result =hasattr(t,"name ")
result =hasattr(Teacher,"name ")
  • 4.getattr(object,name[,default])

返回对象指定的属性值,如果该对象没有其属性,则返回制定的默认值,如果没有属性还有没有设定默认返回值,则抛出一个AttrbuteError异常

class Teacher:
            name ="zhangsan"
            def eat(self):
                print("吃饭")

t =Teacher()

result =getattr(t,"name ")
result =getattr(t,'age','-1')
  • 5.setattr(object,name,value)

如果对象没有属性值,则设定对象指定的属性值

class Teacher:
            name ="zhangsan"
            def eat(self):
                print("吃饭")

t =Teacher()

result =getattr(t,"name ")
result =setattr(t,'height',180)
  • 6.delattr(object,name)

删除对象是否有指定的属性,如果对象没有其属性值,则抛出一个AttrbuteError异常

class Teacher:
            name ="zhangsan"
            def eat(self):
                print("吃饭")

t =Teacher()

result =delattr(t,'name ')

注意:object可为实例化对象,也可为类对象

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

含义:通过属性来设置属性,第一个参数获得属性的方法,第二个参数设置属性的方法,第三个参数删除属性的方法。

优点:不需要修改接口a,只需要修改函数名和property的参数名,通过一个或多个魔术发方法实现

补充(property详细会在魔术方法中)

class DD:
    def __init__(self, x = 10):
        self.x = x
    def getx(self):
        return self.x
    def setx(self, x):
        self.x = x
    def delx(self):
        del self.x
    a = property(getx, setx, delx)


dd = DD()
print(dd.getx())
print(dd.x)
print(dd.a)
dd.a = 19
print(dd.getx())
print(dd.x)
print(dd.a)
del dd.a

实行结果:
10
10
10
19
19
19
 

你可能感兴趣的:(python)