python特殊方法

Python特殊方法

Python特殊方法

  您需要在用户定义的类中实现的方法,Python中的一切都是对象,我们通过类来定义对象。当我们定义一个对象时,我们实际上创建了一个类的实例。因此,类是Python中最基本的部分。Class类有:

  • 数据属性:定义创建类实例所需的内容
  • 方法(即过程属性):定义如何与类的实例交互
Python特殊方法

  我们可以使用数据和过程属性创建自己的类。这是我们的游乐场,因此我们可以实现各种功能来定制一个类。除了用户定义的函数外,还可以在用户定义的类中使用内置的Python函数。特殊方法允许使用内置Python函数来丰富用户定义的类。考虑print函数,它是最常用的Python函数之一。如果你用它来打印你的类的一个实例,它会打印出如下内容:

<__main__.Book object at 0x7f9ed5b1d590>

  它显示了类(书)的名称和对象的内存位置,这不是打印功能的正确使用。我们可以通过在我们的类中实现str特殊方法来自定义它的行为。在本文中,我们晓得博客将为你介绍4Python特殊方法。

  推荐:Python中的 html5lib 和 lxml 解析器

1.__init__

python特殊方法

  __init__特殊方法在创建类实例时自动执行。它也称为类构造函数。init的参数代表一个类的数据属性。

  让我们创建一个名为Book的类。

class Book():
    def __init__(self, name, writer, pages):
       self.name = name
       self.writer = writer
       self.pages = pages

  self指的是实例本身。Book类有3个数据属性,需要在创建Book实例时指定。

b = Book("Moby Dick", "Herman Melville", "378")
type(b)
__main__.Book

  变量b是Book类的一个实例。

2.__str__

python中的特殊方法

  我们使用__str__特殊方法在我们的类中实现内置的打印功能。如果没有__str__,这就是print函数的作用。

print(b)
<__main__.Book object at 0x7f9ed5b1d590>

  让我们在类定义中定义__str__方法。

def __str__(self):
   return f"The title of the book is {self.name}"

  现在print函数将返回名称的标题。它通过name属性访问书名。您可以以任何您喜欢的方式对其进行自定义。

print(b)
The title of the book is xiaodeblog

3.__len__

  len函数返回对象的长度。对于字符串,它返回字符数。对于Pandas数据框,它返回行数。我们可以通过在类定义中实现__len__特殊方法来自定义它的行为。让我们让它返回book对象的页数。

  如果__len__没有在类定义中实现,如果你尝试在你的类的对象上使用它,你会得到一个错误。它没有像print函数那样的默认行为。

def __len__(self):
   return int(self.pages)
len(b)
378

  请注意,每次向类中添加新函数时,都需要重新创建对象才能使用新函数。

  推荐:如何使用Python遍历目录中的文件

4.__eq__

  __eq__特殊方法允许比较一个类的两个实例。如果它在我们的类中定义,我们可以检查一个实例是否等于另一个实例。使用__eq__方法指定相等条件。

  在我们的例子中,如果书名和作者相同,我们可以声明两本书相等。他们可能有不同的页数。

def __eq__(self, other):
   return (self.name == other.name) & (self.writer == other.writer)

  如果两个实例的名称和写入相同,则“==”运算符将返回True。让我们创建两本书并检查它们是否相等。

b = Book("Moby Dick", "Herman Melville", "378")
a = Book("Moby Dick", "Herman Melville", "410")
b == a
True

  如果名称或写入不同,则相等运算符返回False。

b = Book("Moby Dick", "Herman Melville", "378")
a = Book("Moby Dick", "Melville", "410")
b == a
False

结论

  以上是晓得博客为你介绍的Python特殊方法,更多的特殊方法,可参考文档。对象是Python的核心,创建健壮、功能强大且设计良好的Class类。我们已经介绍了您需要在自己的类中实现的4种特殊方法。如果您有任何问题,可留言反馈探讨。

  推荐:零基础如何开始学习Python

给文章评分

晓得博客,版权所有丨如未注明,均为原创
晓得博客 » Python特殊方法

转载请保留链接:https://www.pythonthree.com/special-methods-for-python/

Claude、Netflix、Midjourney、ChatGPT Plus、PS、Disney、Youtube、Office 365、多邻国Plus账号购买,ChatGPT API购买,优惠码XDBK,用户购买的时候输入优惠码可以打95折

Chatgpt-Plus注册购买共享账号
滚动至顶部