isinstance,issubclass,内置函数__str__和__repr__,__format__

Posted 熊猫的黑白照

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了isinstance,issubclass,内置函数__str__和__repr__,__format__相关的知识,希望对你有一定的参考价值。

isinstance(obj,cls)  检查是否obj是否是类 cls 的对象  #对象与类之间的关系

判断第一个参数是否是第二个参数的实例

# 身份运算
# 2 == 3   # 值是否相等
# 2 is 3 # 内存地址是否相等
class A:pass
class B(A):pass
class C(B):pass
c = C()
print(isinstance(c,A)) #True # 包含继承关系的判断
print(type(B) is B) #False
print(type(B) is A) #False # type只关心创建这个对象的类
 

issubclass(sub, super)  检查sub类是否是 super 类的派生类   #类与类之间的关系

class A:pass
class B(A):pass
print(issubclass(A,B))      #False
print(issubclass(B,A))      #Ture
# 第一个参数是疑似子类,第二个参数是疑似父类.
# 最终结果如果真的是父子类关系,则返回True

 

改变对象的字符串显示  __str__,__repr__

自定制格式化字符串  __format__

 1 #_*_coding:utf-8_*_
 2 
 3 format_dict={
 4     nat:{obj.name}-{obj.addr}-{obj.type},#学校名-学校地址-学校类型
 5     tna:{obj.type}:{obj.name}:{obj.addr},#学校类型:学校名:学校地址
 6     tan:{obj.type}/{obj.addr}/{obj.name},#学校类型/学校地址/学校名
 7 }
 8 class School:
 9     def __init__(self,name,addr,type):
10         self.name=name
11         self.addr=addr
12         self.type=type
13 
14     def __repr__(self):
15         return School(%s,%s) %(self.name,self.addr)
16     def __str__(self):
17         return (%s,%s) %(self.name,self.addr)
18 
19     def __format__(self, format_spec):
20         # if format_spec
21         if not format_spec or format_spec not in format_dict:
22             format_spec=nat
23         fmt=format_dict[format_spec]
24         return fmt.format(obj=self)
25 
26 s1=School(oldboy1,北京,私立)
27 print(from repr: ,repr(s1))
28 print(from str: ,str(s1))
29 print(s1)
30 
31 ‘‘‘
32 str函数或者print函数--->obj.__str__()
33 repr或者交互式解释器--->obj.__repr__()
34 如果__str__没有被定义,那么就会使用__repr__来代替输出
35 注意:这俩方法的返回值必须是字符串,否则抛出异常
36 ‘‘‘
37 print(format(s1,nat))
38 print(format(s1,tna))
39 print(format(s1,tan))
40 print(format(s1,asfdasdffd))
 1 class B:
 2 
 3      def __str__(self):
 4          return str : class B
 5 
 6      def __repr__(self):
 7          return repr : class B
 8 
 9 
10 b=B()
11 print(%s%b)
12 print(%r%b)
13 
14 %s和%r

 

以上是关于isinstance,issubclass,内置函数__str__和__repr__,__format__的主要内容,如果未能解决你的问题,请参考以下文章

内置函数isinstance和issubclass

面向对象之isinstance与issubclass(python内置方法)

绑定与非绑定方法及反射,isinstance和issubclass内置函数

爱根,征服我的一天[isinstance,issubclass]反射内置attr,定制自己的数据类型

内置函数isinstance和issubclass介绍和异常处理讲解

17 Apr 18 内置函数(isinstance,issubclass)反射 __str__ __del__ __call__ 元类