25个关键技术点,带你熟悉Python (9)

因此,当执行 print 语句时,__str__ 将会被执行。

__cmp__

如果想要提供自定义逻辑来比较同一实例的两个对象,可以使用__cmp__ 实例函数。

__cmp__ 函数返回1 (更大), - 1 (更低) 和0 (相等),以指示两个对象的大小。

可以将 __cmp__ 想象成其他编程语言中的 Equals() 方法。

Overloading

通过将更多参数作为实例,来重载一个对象。

还可以通过为 __add__ 来实现想要的运算符,如 +。

对象的浅拷贝 (Shallow Copy) 和深拷贝 (Deep Copy)

等效对象 – 包含相同的值

相同对象 – 引用相同的对象 – 内存中指向相同的地址

如果要复制整个对象,可以使用复制模块 (copy module),如下所示。

25个关键技术点,带你熟悉Python

这将导致浅拷贝,因为属性的引用指针将会被复制。

如果对象的一个属性是对象引用,那么它将简单地指向与原始对象相同的引用地址。

更新源对象中的属性将导致目标对象中的属性也会更新。

浅拷贝是复制引用指针。

这种情况下可以利用深拷贝,如下所示。

25个关键技术点,带你熟悉Python

如果 MyClass 包含引用 MyOtherClass 对象的属性,则属性的内容将通过 deepcopy 复制到新创建的对象中。

深拷贝将对对象进行新的引用。

18、面向对象设计——继承

Python支持对象的继承,即对象可以继承其父类的功能和属性。

继承的类可以在其函数中包含不同的逻辑。

如果一个父类 ParentClass 有两个子类 SubClass1 和 SubClass2,那么你可以使用Python来创建类,如下所示。

25个关键技术点,带你熟悉Python

上例中两个子类都将包含 my_function() 函数

类的继承属性鼓励代码的重用性和可维护性。

此外,python 中支持多类继承,这与 C# 语言不同。

多类继承 multi-Inheritance

如果你想调用父类函数,可以这样:

19、垃圾收集——内存管理

Python 中的所有对象都存储在一个堆积空间 (heap space),而 Python 解释器可以访问此空间。

Python 有一个内置的垃圾收集机制。

这意味着 Python 可以自动为程序进行分配和取消内存,这与 C++ 或 C# 等其他语言类似。

垃圾收集机制主要是清除程序中未引用/使用的那些对象的内存空间。

由于多个对象可以共享内存引用,因此 python 使用两种机制:

引用计数:计算引用对象的数目。如果对象的计数为0,则取消对象的空间分配。

循环引用:这种机制关注的是循环引用:当取消分配 (deallocation) 的数目大于阈值时,仅取消对象所在的内存空间分配。

在 Python 中新创建的对象,可以通过如下方式进行检查:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpgpjd.html