Python特殊方法
您需要在用户定义的类中实现的方法,Python中的一切都是对象,我们通过类来定义对象。当我们定义一个对象时,我们实际上创建了一个类的实例。因此,类是Python中最基本的部分。Class类有:
- 数据属性:定义创建类实例所需的内容
- 方法(即过程属性):定义如何与类的实例交互
我们可以使用数据和过程属性创建自己的类。这是我们的游乐场,因此我们可以实现各种功能来定制一个类。除了用户定义的函数外,还可以在用户定义的类中使用内置的Python函数。特殊方法允许使用内置Python函数来丰富用户定义的类。考虑print函数,它是最常用的Python函数之一。如果你用它来打印你的类的一个实例,它会打印出如下内容:
<__main__.Book object at 0x7f9ed5b1d590>
它显示了类(书)的名称和对象的内存位置,这不是打印功能的正确使用。我们可以通过在我们的类中实现str特殊方法来自定义它的行为。在本文中,我们晓得博客将为你介绍4Python特殊方法。
推荐:Python中的 html5lib 和 lxml 解析器
1.__init__
__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__
我们使用__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
请注意,每次向类中添加新函数时,都需要重新创建对象才能使用新函数。
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种特殊方法。如果您有任何问题,可留言反馈探讨。
Claude、Netflix、Midjourney、ChatGPT Plus、PS、Disney、Youtube、Office 365、多邻国Plus账号购买,ChatGPT API购买,优惠码XDBK,用户购买的时候输入优惠码可以打95折