补8.python之面相对象part.7(类相关函数的补充)

简介:

一,isinstance(obj.cls) & issubclass(sub,super) 

  1. isinstance(obj.cls):用于检查一个对象是否属于某个类。(某个对象是否由某个类产生)

   l1 = list()

   print isinstance(l1,list)

   输出:

   True

  2.issubclass(sub,super):用于判断一个类是否是另一个类的子类。

  #sub指的是子类,super指的是父类。

   class c1(object):

      pass

   class c2(c1):

     pass

print issubclass(c2,c1)

输出:

True


二 , __getattribute__ (内置方法)

这个内置方法,从名字上来看和__getattr__特别的类似,但是触发这个内置方法的条件和__getattr__完全不同!

在一个对象中,当要查找的属性或者方法找不到的时候,就会触发__getattr__。

__getattrbute__则是无论该方法或者属性是否能被找到,都会触发这个方法!这个方法一但执行,如果没有在内部触发一个AttributeError异常,那么__getattr__方法将永远不会被触发。

下面是例子:

class class1(object):

    def __init__(self,x):

        self.x = x

    def __getattr__(self, item):

        print "call __getattr__"

obj1 = class1(123)

print obj1.x

输出:

call test

#接着在调用一个不存在的属性

obj1.asadsdsadasfasf

输出:

call __getattr__   #__getattr__方法成功被执行。


class class1(object):

    def __init__(self,x):

        self.x = x

    def __getattr__(self, item):

        print "call __getattr__"

    def __getattribute__(self, item):

        print "call  __getattribute__ "

        raise AttributeError("^ - ^")  #抛出一个AttributeError

obj1 = class1(123)

obj1.x

obj1.asasasasasas


输出执行结果:

call  __getattribute__ 

call __getattr__

call  __getattribute__ 

call __getattr__


从上面的结果来看, __getattribute__当抛出了一个AttributeError异常的时候,__getattr__才会被触发!!





      本文转自苏浩智 51CTO博客,原文链接:http://blog.51cto.com/suhaozhi/1917990,如需转载请自行联系原作者




相关文章
|
9月前
|
存储 JavaScript Java
(Python基础)新时代语言!一起学习Python吧!(四):dict字典和set类型;切片类型、列表生成式;map和reduce迭代器;filter过滤函数、sorted排序函数;lambda函数
dict字典 Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。 我们可以通过声明JS对象一样的方式声明dict
492 2
|
9月前
|
算法 Java Docker
(Python基础)新时代语言!一起学习Python吧!(三):IF条件判断和match匹配;Python中的循环:for...in、while循环;循环操作关键字;Python函数使用方法
IF 条件判断 使用if语句,对条件进行判断 true则执行代码块缩进语句 false则不执行代码块缩进语句,如果有else 或 elif 则进入相应的规则中执行
1542 1
|
9月前
|
Java 数据处理 索引
(numpy)Python做数据处理必备框架!(二):ndarray切片的使用与运算;常见的ndarray函数:平方根、正余弦、自然对数、指数、幂等运算;统计函数:方差、均值、极差;比较函数...
ndarray切片 索引从0开始 索引/切片类型 描述/用法 基本索引 通过整数索引直接访问元素。 行/列切片 使用冒号:切片语法选择行或列的子集 连续切片 从起始索引到结束索引按步长切片 使用slice函数 通过slice(start,stop,strp)定义切片规则 布尔索引 通过布尔条件筛选满足条件的元素。支持逻辑运算符 &、|。
408 0
|
10月前
|
设计模式 缓存 监控
Python装饰器:优雅增强函数功能
Python装饰器:优雅增强函数功能
382 101
|
10月前
|
缓存 测试技术 Python
Python装饰器:优雅地增强函数功能
Python装饰器:优雅地增强函数功能
312 99
|
10月前
|
存储 缓存 测试技术
Python装饰器:优雅地增强函数功能
Python装饰器:优雅地增强函数功能
544 98
|
10月前
|
缓存 Python
Python中的装饰器:优雅地增强函数功能
Python中的装饰器:优雅地增强函数功能
|
11月前
|
Python
Python 函数定义
Python 函数定义
937 155
|
10月前
|
安全 大数据 程序员
Python operator模块的methodcaller:一行代码搞定对象方法调用的黑科技
`operator.methodcaller`是Python中处理对象方法调用的高效工具,替代冗长Lambda,提升代码可读性与性能。适用于数据过滤、排序、转换等场景,支持参数传递与链式调用,是函数式编程的隐藏利器。
273 4
|
10月前
|
缓存 供应链 芯片
电子元件类商品 item_get - 商品详情接口深度分析及 Python 实现
电子元件商品接口需精准返回型号参数、规格属性、认证及库存等专业数据,支持供应链管理与采购决策。本文详解其接口特性、数据结构与Python实现方案。

推荐镜像

更多