python如何使用魔术方法

这篇文章主要为大家展示了“python如何使用魔术方法”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“python如何使用魔术方法”这篇文章吧。

目前创新互联公司已为上1000+的企业提供了网站建设、域名、网站空间、网站托管、服务器托管、企业网站设计、江都网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。

魔术方法

魔术方法可以看作是 Python 的管道。它们被称为“底层”方法,用于某些内置的方法、符号和操作。你可能熟悉的常见魔术方法是 __init__(),当我们想要初始化一个类的新实例时,它会被调用。

你可能已经看过其他常见的魔术方法,如 __str__ 和 __repr__。Python 中有一整套魔术方法,通过实现其中的一些方法,我们可以修改一个对象的行为,甚至使其行为类似于内置数据类型,例如数字、列表或字典。

让我们创建一个 Money 类来示例:

class Money:    currency_rates = {        '$': 1,        '€': 0.88,    }     def __init__(self, symbol, amount):        self.symbol = symbol        self.amount = amount     def __repr__(self):        return '%s%.2f' % (self.symbol, self.amount)     def convert(self, other):        """ Convert other amount to our currency """        new_amount = (            other.amount / self.currency_rates[other.symbol]            * self.currency_rates[self.symbol])         return Money(self.symbol, new_amount)

该类定义为给定的货币符号和汇率定义了一个货币汇率,指定了一个初始化器(也称为构造函数),并实现 __repr__,因此当我们打印这个类时,我们会看到一个友好的表示,例如 $2.00 ,这是一个带有货币符号和金额的 Money('$', 2.00) 实例。最重要的是,它定义了一种方法,允许你使用不同的汇率在不同的货币之间进行转换。

打开 Python shell,假设我们已经定义了使用两种不同货币的食品的成本,如下所示:

>>> soda_cost = Money('$', 5.25)>>> soda_cost    $5.25 >>> pizza_cost = Money('€', 7.99)>>> pizza_cost    €7.99

我们可以使用魔术方法使得这个类的实例之间可以相互交互。假设我们希望能够将这个类的两个实例一起加在一起,即使它们是不同的货币。为了实现这一点,我们可以在 Money 类上实现 __add__ 这个魔术方法:

class Money:     # ... previously defined methods ...     def __add__(self, other):        """ Add 2 Money instances using '+' """        new_amount = self.amount + self.convert(other).amount        return Money(self.symbol, new_amount)

现在我们可以以非常直观的方式使用这个类:

>>> soda_cost = Money('$', 5.25)>>> pizza_cost = Money('€', 7.99)>>> soda_cost + pizza_cost    $14.33>>> pizza_cost + soda_cost    €12.61

当我们将两个实例加在一起时,我们得到以***个定义的货币符号所表示的结果。所有的转换都是在底层无缝完成的。如果我们想的话,我们也可以为减法实现 __sub__,为乘法实现 __mul__ 等等。阅读模拟数字类型或魔术方法指南来获得更多信息。

我们学习到 __add__ 映射到内置运算符 +。其他魔术方法可以映射到像 [] 这样的符号。例如,在字典中通过索引或键来获得一项,其实是使用了 __getitem__ 方法:

>>> d = {'one': 1, 'two': 2}>>> d['two']2>>> d.__getitem__('two')2

一些魔术方法甚至映射到内置函数,例如 __len__() 映射到 len()

class Alphabet:    letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'     def __len__(self):        return len(self.letters) >>> my_alphabet = Alphabet()>>> len(my_alphabet)    26

以上是“python如何使用魔术方法”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联行业资讯频道!

网站题目:python如何使用魔术方法
文章地址:https://www.cdcxhl.com/article22/iigcjc.html

成都网站建设公司_创新互联,为您提供网站收录关键词优化网站维护网站内链企业建站网页设计公司

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都做网站