面对对象编程一些内置函数与反射

1,isinstance()

举个例子:

class Foo:

     def name(self):

        self.name = name

obj = Foo()

print(obj,Foo)     #判断obj是不是Foo的对象

输出:True

2,issubclass()

class Foo:
    pass

class Bar(Foo):

扫描二维码关注公众号,回复: 2924073 查看本文章

    pass

print(issubclass(Foo,Bar))     # 判断Foo是不是Bar的子集

输出;True

3,反射的四个函数:

1>hasattr()

class Foo:

    name = 'name'

print(hasattr(obj,'name'))      #   obj中是否有name属性

输出:True

2>getattr()

class Foo:

    name = 'lili'

print(getatter(obj.'name'))      #   obj.name输出

输出:lili

3>setattr()

class Foo:

    name = 'lili'

print(setattr(obj,'name','LILI'))      # 把obj中的name改为LILIL

输出:LILI

4>delattr(obj,'name')

class Foo:

    name = 'lili'

print(delattr(obj,'name'))     #把对象中的'name'删除

4,对象内部带有的函数,会自动触发

__str__:在对象被打印时自动触发,可以用来定义对象被打印时输出的信息

注意:必须返回一个字符串类型的值

class People:

    def __init__(self,name,age):
        self.name = name

        self.age = age

    def __str__(self):

        return "<name:%s age:%s>" %(self.name,self.age)

obj1 = People('lili',18)

print(obj1)      # print(obj1.__str__())自动打印的是__str__的返回值

__del__:在对象被删除时先自动触发该方法,可以用来回收对象外其他相关资源,比如系统资源

class Foo:

    def __init__(self,x,filepath,encoding='utf-8')

        self.x = x

        self.f = open(filepath,'rt',encoding=encoding)

    def __del__(self):

        print('runing.....')

        self.f.closs()        # 回收对象关联的其他资源

obj = Foo(1,'a.txt')

猜你喜欢

转载自blog.csdn.net/qq_42737056/article/details/81984628