zoukankan      html  css  js  c++  java
  • 学习日记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')
  • 相关阅读:
    Ansible 日常使用技巧
    Linux下科学计数法(e)转化为数字的方法 [shell中几种数字计算说明]
    业务日志清理脚本
    Kubernetes容器集群
    Kubernetes 之Pod学习
    数据结构之数组
    Java Class 文件中Method的存储
    理解Flink Transformation
    理解Java BlockingQueue
    理解Java FutureTask
  • 原文地址:https://www.cnblogs.com/jianhaozhou/p/9524431.html
Copyright © 2011-2022 走看看