1、isinstance是用来判断对象是否是某个类
isinstance(obj,class)
2、issubclass是用来判断一个类是否为另一个类的子类
issubclass(Bar,Foo)
class Foo: pass class Bar(Foo): pass obj = Foo() print(isinstance(obj, Foo)) # True print(issubclass(Bar, Foo)) # True isinstance与issubclass
1、什么是反射?
反射:主要是指程序可以访问、检测和修改它本身状态或行为的一种能力(自省)。
在python面向对象中的反射,是通过字符串来操作类或者对象的属性。
使用反射的好处:1、实现可拔插机制。2、动态导入模块(基于反射当前模块成员)。
2、如何用反射?
有4个可以实现自省的函数(适用于类和对象)
hasattr(判断有没有该属性)
getattr(拿到属性)
setattr(设置属性)
delattr(删除属性)
class People: country = ‘China‘ def __init__(self, name): self.name = name def eat(self): print(‘%s is eating‘ % self.name) peo1 = People(‘egon‘) print(hasattr(peo1, ‘eat‘)) # peo1.eat # True print(getattr(peo1, ‘eat‘)) # peo1.eat # <bound method People.eat of <__main__.People object at 0x0000000002775FD0>> print(getattr(peo1, ‘xxxxx‘, None)) # None setattr(peo1, ‘age‘, 18) # peo1.age=18 print(peo1.age) # 18 print(peo1.__dict__) # {‘name‘: ‘egon‘, ‘age‘: 18} delattr(peo1, ‘name‘) # del peo1.name print(peo1.__dict__)
1,、__str__方法。
在类内部定义一个函数__str__,不需要任何参数,在对象被打印时自动触发,应该在方法内采集与对象self有关的信息,然后拼成字符串返回。
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 obj=People(‘egon‘,13) 10 print(obj) #obj.__str__()
面向对象(五)--isinstance与issubclass方法、反射、内置方法
原文:https://www.cnblogs.com/zhangbingsheng/p/10416017.html