Python类的内置属性详解:isinstance、__getattribute__等

4 下载量 200 浏览量 更新于2024-08-30 收藏 117KB PDF 举报
"这篇初学者Python笔记主要涵盖了类的内置属性和方法,包括isinstance与issubclass的使用、__getattribute__方法、item系列、__str__与__repr__的区别、自定义格式化方法、__doc__属性、__del__析构函数、__call__方法、以及迭代器协议和如何实现斐波那契数列。文章通过实例讲解了这些概念,旨在帮助初学者更好地理解和运用Python的面向对象编程特性。" 在Python中,面向对象编程的核心在于类和对象。这篇文章深入探讨了一些类的内置方法和属性,这对于理解Python的OOP至关重要。 1. `isinstance`与`issubclass`: - `isinstance(obj, cls)`:这个函数用于检查`obj`是否是`cls`类的实例,或者是`cls`的子类的实例。例如,如果`obj`是`Bar`类的实例,而`Bar`继承自`Foo`,则`isinstance(obj, Foo)`将返回`True`。 - `issubclass(Bar, Foo)`:这个函数用于确定`Bar`是否是`Foo`的子类。如果`Bar`是从`Foo`派生的,`issubclass`会返回`True`。 2. `__getattribute__`方法: - 这个方法在访问任何属性时都会被调用,无论该属性是否存在。如果属性不存在并且在`__getattribute__`中引发了异常,如`AttributeError`,则会尝试调用`__getattr__`方法。 3. `__str__`与`__repr__`方法: - `__str__`用于提供对象的“用户友好”的字符串表示,通常用于`print`函数或`str()`转换。 - `__repr__`返回对象的“官方”字符串表示,通常用于调试,应尽可能地返回可以还原对象的表达式。 4. 自定义格式化方法: - Python允许通过重写`__format__`方法来自定义对象的格式化输出,这在创建自定义数据类型时特别有用。 5. `__doc__`描述属性: - 类的`__doc__`属性存储了类的文档字符串,它提供了关于类、方法或函数的用途和用法的说明。 6. `__del__`析构方法: - 当对象不再被引用时,Python会调用`__del__`方法进行清理工作。不过,需要注意的是,Python的垃圾回收机制并不保证`__del__`一定会被调用。 7. `__call__`方法: - 如果一个对象定义了`__call__`方法,那么该对象就可以像函数一样被调用。这在创建可调用的对象或者模拟函数行为时很有用。 8. 迭代器协议: - Python的迭代器协议由`__iter__`和`__next__`方法组成,它们使得一个对象可以被迭代。`__iter__`返回迭代器对象,通常是`self`,而`__next__`返回序列中的下一个元素,如果没有更多元素,则引发`StopIteration`异常。 9. 实现斐波那契数列: - 文章可能介绍了如何通过迭代器协议来实现一个生成斐波那契数列的类,这通常涉及到利用`yield`关键字创建生成器函数。 通过学习这些概念,初学者能够更好地理解Python的面向对象编程,并能够创建更复杂的类和对象结构。同时,了解这些内置方法和属性有助于编写更加高效和易于维护的代码。