Press "Enter" to skip to content

Python OPP,以及repr()和str()的重要性

PYTHON编程

本文探讨了在Python类中使用repr()和str()的不同方面

Python类需要字符串表示以向用户和开发者提供比简单的字符乱串更多的信息。照片来自Surendran MP在Unsplash上的照片

Python类有多个面孔。例如,您可以创建一个空类:

class MyClass:    pass

它仍然可以派上用场,例如作为哨兵值。您可以添加一个__init__()方法:

class MyClass:    def __init__(self, value):        self.value = value

这仍然是一个非常简单的类,但是这次它将保持一个特定的值。

Python类的一大优势是它们可以用作类型,如下所示:

def foo(x: MyClass, n: int) -> list[MyClass]:    return [x] * n

请记住,不实现__init__()方法并不意味着它不存在。实际上,我们在上面重载了__init__()方法,而不仅仅是实现它。这是Python类的另一个重要方面,您应该知道:您可以重载许多其他方法,例如__new__()__eq__()__setattr__()。如果您不重载这些方法,某些方法将具有默认实现(如__init__()__new__()__setattr__()__eq__()),而其他方法则不会(如__lt__()和除__eq__()__getitem__()__setitem__()__len__()之外的所有其他比较方法)。

一个类可以继承另一个类,如下所示:

class MyClass(dict):    @staticmethod    def say_hello(self):        print("你好!")

就像上面一样,它可以使用静态方法,但也可以使用类方法。您可以创建混入类、抽象基类、单例模式和许多其他有用的东西。

Python类有如此多的面貌,以至于讨论每一个细节需要花费多年的时间,而我们将在未来的文章中逐一介绍。在本文中,我们将重点讨论一个特定的方面:__repr__()和__str__()方法之间的差异和功能。

乍一看,您可能会认为这是一个次要的主题,但实际上它非常重要。实现一个Python类很容易,但要实现一个良好的…

Leave a Reply

Your email address will not be published. Required fields are marked *