zoukankan      html  css  js  c++  java
  • Python27天 反射 ,isinstance与ssubclass 内置方法

    所学内容

    反射

    1、hasattr ( 判断一个属性在对象里有没有 ) -------------------- 【对象,字符串属性】本质是:# 判断 ' name ' in obj.__dict__

    2、getattr ( 获取对象中字符串的属性 ) --------------------------- 【对象,第三参数,字符串属性】本质是:# 从一个字典 obj.__dict__ [ ' name ' ]

    3、setattr ( 一个属性的赋值操作 ( 设置值,修改值 ) )---------【对象,属性,值】setattr  本质是:# obj.__dict__ [ ' FFY ' ]

    4、delattr ( 删除属性操作 ) ------------------------------------------ 【删除属性】delattr 本质是:# 通过字符串来操作字典,但不要直接操作字典

    内置方法

    __str__ :在对象被打印时自动触发,可以用来定义对象被打印的输出信息(注意:必须返回一个字符串类型的值)

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

    isinstance与ssubclass 

    isinstance(对象,类)--------------------- 判断一个对象是否是一个类的实例

    issubclass(子类,父类)------------------ 判断一个类是否是另一个类的子类

    反射的用法

     1 class Ftp:
     2     def get(self):
     3         print('get')
     4 
     5     def put(self):
     6         print('put')
     7 
     8     def login(self):
     9         print('login')
    10 
    11     def run(self):
    12         while True:
    13             cmd = input('>>>: ').strip()  # cmd='get'
    14             if hasattr(self, cmd):
    15                 method = getattr(self, cmd)
    16                 method()
    17             else:
    18                 print('输入的方法不存在')
    19 
    20 
    21 obj = Ftp()
    22 obj.run()

    内置的用法

    __str__ :在对象被打印时自动触发,可以用来定义对象被打印的输出信息(注意:必须返回一个字符串类型的值)

     1 class People:
     2     def __init__(self, name, age):
     3         self.name = name
     4         self.age = age
     5 
     6     def __str__(self):
     7         # print('run..........')
     8         return '<name:%s age:%s>' % (self.name, self.age)
     9 
    10 
    11 obj1 = People('egon', 18)
    12 print(obj1)  # print(obj1.__str__())
    13 
    14 obj2=list([1,2,3])
    15 print(obj2)

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

     1 class Foo:
     2     def __init__(self,x,filepath,encoding='utf-8'):
     3         self.x=x
     4         self.f=open(filepath,'rt',encoding=encoding)
     5 
     6     def __del__(self):
     7         print('run.....')
     8         # 回收对象关联的其他资源
     9         self.f.close()
    10 
    11 obj=Foo(1,'a.txt')
    12 # del obj
    13 print('主===========>')

    isinstance与issubclass的用法

     1 class Bar:
     2     pass
     3 
     4 
     5 class Foo(Bar):
     6     pass
     7 
     8 
     9 obj = Foo()
    10 print(issubclass(Foo, Bar))
    11 
    12 print(isinstance(obj, Foo))
  • 相关阅读:
    第十次作业
    第九次作业总结
    第九次作业
    第八次作业总结
    第七次作业总结
    第六次总结
    第十二次作业总结
    第十一次作业总结
    第十次作业总结
    第九次作业总结
  • 原文地址:https://www.cnblogs.com/zedong/p/9526435.html
Copyright © 2011-2022 走看看