专栏首页python3Python 反射-isinstance

Python 反射-isinstance

用到的

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

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

hasattr(对象,字符串属性)  ------------  判断一个属性在对象里有没有

getattr(对象,属性,第三参数)  ---------  获取对象中的字符串属性  

setattr(对象,属性,值)  ------------------  属性的赋值(设置值,修改值,新增值)

delattr(删除的属性)  --------------------  删除属性操作

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

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

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))
>>>True
11 print(isinstance(obj, Foo))
>>>True

反射例子

 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         return '<name:%s age:%s>' % (self.name, self.age)
 8 
 9 
10 obj = People('egon', 18)
11 print(obj)  # print(obj.__str__())
>>><name:egon age:18>

__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 
12 obj = Foo(1, 'a.txt')
13 print('主===========>')
>>>主===========>
>>>run.....

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python Day7

    是一种新建类的方式,新建的类称为子类,子类会遗传父亲的属性,可以减少代码冗余 在python当中,子类(派生类)可以继承一个或多个父类(基类,超类)

    py3study
  • python学习 day017打卡 类与

    由于python是一门弱类型编程语言,并且所有的对象之间其实都是多态关系,也就是说,所有的东西都可以当做对象来使用.

    py3study
  • Python3快速入门(六)——Pyth

    面向对象编程(Object Oriented Programing,OOP)是一种编程思想,OOP把对象当成程序的一个基本单元,一个对象包含数据和操作数据的方法...

    py3study
  • 面向对象进阶

    Wisdom is knowing what to do next , virtue is doing it .

    GH
  • Python基础(9)——私有化

    通过name mangling(名字重整(目的就是以防子类意外重写基类的方法或者属性)如:_Class__object)机制就可以访问private了。

    羊羽shine
  • python3 最简单的实现 模版设计模式

    在项目开发过程时,遇见某些子类的逻辑处理流程大致相同,可是用模板模式减少代码冗余,降低耦合。

    公众号 碧油鸡
  • python学习 day017打卡 类与

    由于python是一门弱类型编程语言,并且所有的对象之间其实都是多态关系,也就是说,所有的东西都可以当做对象来使用.

    py3study
  • Python Day7

    是一种新建类的方式,新建的类称为子类,子类会遗传父亲的属性,可以减少代码冗余 在python当中,子类(派生类)可以继承一个或多个父类(基类,超类)

    py3study
  • python3 最简单的实现 模版设计模式

    在项目开发过程时,遇见某些子类的逻辑处理流程大致相同,可是用模板模式减少代码冗余,降低耦合。

    公众号 碧油鸡
  • Python3快速入门(六)——Pyth

    面向对象编程(Object Oriented Programing,OOP)是一种编程思想,OOP把对象当成程序的一个基本单元,一个对象包含数据和操作数据的方法...

    py3study

扫码关注云+社区

领取腾讯云代金券