学习日记0823面向对象高级

一 isinstance方法

  判断一个对象是否是一个类的对象

class Foo:
    pass

f1 = Foo()

isinstance(f1,Foo)

二 issubclass方法

  判断两个类是否是继承关系

class Foo:
    pass

class Woo(Foo):
    pass

print(issubclass(Woo,Foo))

三 反射(通过字符串来反射/映射到类/对象的属性上)

  hasatter(对象,'属性')    判断对象中是否存在属性name             本质原理:'name' in 对象.__dict__

  getatter(对象,'属性',None)   得到一个对象中的属性 如果该属性不存在就返回None  本质原理:对象.__dict__['属性']

  setatter(对象,'属性','值')    为对象添加一个属性 如果该属性存在就修改        本质原理:对象.__dict__['属性'] = '值'

  delatter(对象,'属性')     删除对象的一个属性                   本质原理:del 对象__dict__['属性']

 

四 内置方法

  __str__  在对象被打印是触发,可以用来定制对象被打印时的输出信息

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

    

class Foo:
    def __init__(self,name,age):
        self.name = name
        self.age = age
    def __str__(self):
        return '%s %s'%(self.name,self.age)

f= Foo('egon',18)
print(f)

 

__del__  在对象被删除是自动触发,可以用来回收对象以外的其他相关资源,比如系统资源

# __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('run.....')
        # 回收对象关联的其他资源
        self.f.close()

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

 

posted @ 2018-08-23 16:12  周建豪  阅读(121)  评论(0编辑  收藏  举报