isinstance与issubclass的使用 和 __enter__与__exit__的使用

isinstance与issubclass的使用

class Foo:

  pass

f=Foo()

print(isinstance(f,Foo))  #判断f是否是Foo的实例

 

class Coo:

  pass

print(issubclass(Coo,Foo)) #判断Coo是否是Foo的子类

c=Coo()  

print(isinstance(c,Foo)) #返回True 子类的实例可以返回True

 

__enter__与__exit__的使用:

class Test:
    def __init__(self,name):
        self.name=name
    def __enter__(self):
        print("---》执行enter")
        return self
    def __exit__(self, exc_type, exc_val, exc_tb):
        print("最后执行我")

with Test("123") as f:   #实际上with Test(“123”) 这个执行的是__entry__的内容然后把return 的值给f
    print("1")
    print("2")

返回结果:

---》执行enter
1
2
最后执行我

补 充

class Test:
    def __init__(self,name):
        self.name=name
    def __enter__(self):
        print("---》执行enter")
        return self
    def __exit__(self, exc_type, exc_val, exc_tb):
        print("最后执行我")
        print(exc_type)
        print(exc_val)
        print(exc_tb)
        return True

with Test("123") as f:   #实际上with Test(“123”) 这个执行的是__entry__的内容然后把return 的值给f
    print("1")
    print("2")
    print(sada)  #报错的时候将直接执行exit的内容 with中内容和程序内容将不再执行
    print("3")      #若有return True 的时候则继续运行程序但是with将不再运行
                 #exc_type是错误类型 exc_val错误值 exc_tb最终信息
print("------------------")

 

posted @ 2020-07-11 00:12  彡心如止水彡  阅读(102)  评论(0)    收藏  举报