magic方法在python中的作用是什么?
根据我的理解,诸如magic方法在python中的作用是什么?,python,Python,根据我的理解,诸如\uuuuu str\uuuuuuuuu、\uuuuuu next\uuuuuuuuu、\uuuuuuu setattr\uuuuuuuuuuu之类的神奇方法都是Python的内置功能。它们将在创建实例对象时自动调用。它还起着覆盖的作用。我还应该忽略或忽略魔法方法的哪些重要特征 python中的“magic”方法在特定的上下文中做特定的事情 例如,要“覆盖”加法运算符(+),您需要定义一个\uuuuuuuuuuuuuu方法。减法是\uuuu sub\uuuu等 在对象创建过程中
\uuuuu str\uuuuuuuuu
、\uuuuuu next\uuuuuuuuu
、\uuuuuuu setattr\uuuuuuuuuuu
之类的神奇方法都是Python的内置功能。它们将在创建实例对象时自动调用。它还起着覆盖的作用。我还应该忽略或忽略魔法方法的哪些重要特征 python中的“magic”方法在特定的上下文中做特定的事情
例如,要“覆盖”加法运算符(+),您需要定义一个\uuuuuuuuuuuuuu
方法。减法是\uuuu sub\uuuu
等
在对象创建过程中调用其他方法(\uuuuuu new\uuuuu
,\uuuuuu init\uuuu
)。其他方法用于特定的语言结构(\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
),您可能会争论\uuuuuuuuuuuuuu
实际上,除了保证在特定时间被语言调用之外,魔术方法没有什么特别之处。作为程序员,您有权连接到结构中,并在这些情况下更改对象的行为方式
对于一个近乎完整的总结,请看一看python。使用魔法方法可以做很多事情,因为很难找到正确的开始方法,我想给你一些关于我经常使用的东西的灵感
虽然您可能已经在使用其中的一些方法(如\uuuu init\uuuu
),但我会开始学习特定于运算符的魔术方法,这有助于我优化类以及如何使用它们。例如,magic方法\uuuu mul\uuuu
允许您描述在类被乘法运算符调用时发生的情况。在下面的示例中,您可以看到,解释器首先查找被乘数的\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
示例1:
class a:
def __mul__(self, other):
print("__mul__ a")
def __rmul__(self, other):
print("__rmul__ a")
class b:
def __mul__(self, other):
print("__mul__ b")
def __rmul__(self, other):
print("__rmul__ b")
ia = a()
ib = b()
ia * ib
# prints __mul__ a
class a:
pass
class b:
def __mul__(self, other):
print("__mul__ b")
def __rmul__(self, other):
print("__rmul__ b")
ia = a()
ib = b()
ia * ib
# prints __rmul__ b
示例2:
class a:
def __mul__(self, other):
print("__mul__ a")
def __rmul__(self, other):
print("__rmul__ a")
class b:
def __mul__(self, other):
print("__mul__ b")
def __rmul__(self, other):
print("__rmul__ b")
ia = a()
ib = b()
ia * ib
# prints __mul__ a
class a:
pass
class b:
def __mul__(self, other):
print("__mul__ b")
def __rmul__(self, other):
print("__rmul__ b")
ia = a()
ib = b()
ia * ib
# prints __rmul__ b
与此示例对应的任何其他操作符都可以工作。我希望这能帮助你开始提高你的魔法方法技能。提示:
要使您的类具有可比性,您可以使用。
使用比较的两个类调用该方法。
如果第一个类较大,则返回正值。
如果第二个类较大,则返回一个否定值。
如果大小相同,则返回零。
你不必对每一种可能性都使用神奇的方法。你能进一步改进你的问题吗?更多的解释可能会让它更清楚。是什么让你认为在创建对象时会自动调用神奇的方法?看看这个!《魔法方法完整指南》@RahulLakhanpal,大约有十分之一的魔法方法。@TigerhawkT3我很少看到编程人员在课外称魔法方法。因此,我猜测magic方法在后端或后台运行,或者在初始化实例对象后调用它们。