码迷,mamicode.com
首页 > 其他好文 > 详细

isinstance,issubclass和__getattrribute__

时间:2018-06-06 23:53:04      阅读:133      评论:0      收藏:0      [点我收藏+]

标签:name   foo   style   rri   def   操作   nbsp   判断   IV   

 1 class Foo:
 2     pass
 3 class Boo(Foo):
 4     pass
 5 
 6 f1 = Foo()
 7 f2 = Boo()
 8 # isinstance(obj,cls)检查是否obj是否是类 cls 的对象       isinstance()判断实例化的对象是否属于后面的类
 9 print(isinstance(f1,Foo))           #True
10 print(isinstance(f2,Foo))           #True
11 # issubclass(sub, super)检查sub类是否是 super 类的派生类(子类)
12 print(issubclass(Boo,Foo))
13 
14 # getattribute
15 class Foo:
16     def __init__(self,x):
17         self.x = x
18 
19     def __getattr__(self, item):
20         print(这里是__getattr__)
21     def __getattribute__(self, item):
22         print(这里是__getattrribute__)
23 
24 f1 = Foo(x)
25 f1.x            #这里是__getattrribute__
26 f1.name         #这里是__getattrribute__
27 
28 class Foo:
29     def __init__(self,x):
30         self.x = x
31 
32     def __getattr__(self, item):
33         print(这里是__getattr__)
34     def __getattribute__(self, item):
35         print(这里是__getattrribute__)
36         raise AttributeError(抛出异常)        #这样子抛异常会执行上一行的操作
37 
38 
39 f1 = Foo(x)
40 f1.x
41 ## 这里是__getattrribute__
42 ## 这里是__getattr__
43 f1.name
44 ## 这里是__getattrribute__
45 ## 这里是__getattr__

 

isinstance,issubclass和__getattrribute__

标签:name   foo   style   rri   def   操作   nbsp   判断   IV   

原文地址:https://www.cnblogs.com/humanskin/p/9147669.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!