我编写了一个类来表示Python中的向量(作为练习),但在扩展内置运算符时遇到了问题。
我__mul__
为向量类定义了一个方法。问题在于,x * y
解释器在表达式中调用__mul__
x而不是y的方法。
因此,vector(1, 2, 3) * 2
返回向量<2,4,6>就像它应该的那样;但是2 * vector(1, 2, 3)
会创建TypeError,因为内置的int类不支持通过用户定义的向量进行乘法运算。
我可以通过简单地编写一个新的乘法函数来解决这个问题
def multiply(a, b):
try:
return a * b
except TypeError:
return b * a
但这需要重新定义我要与用户定义的类一起使用的每个函数。
有没有办法使内置函数正确处理此问题?
如果要 对不同类型进行 交换 ,则
需要实现__rmul__()
。如果实现,则将与所有__r*__()
特殊方法一样调用该方法,否则操作将引发a
TypeError
。当心参数已交换:
class Foo(object):
def __mul_(self, other):
''' multiply self with other, e.g. Foo() * 7 '''
def __rmul__(self, other):
''' multiply other with self, e.g. 7 * Foo() '''
问题内容: 问题是:编写一个交换两个变量的方法。这两个变量应该是原语。它不需要是通用的,例如两个变量。有办法吗? 问题答案: 如果不使用数组或对象,不可以,无法在方法中进行操作。
问题内容: 在JavaScript中使用构造函数创建类时,以后是否可以重新定义类的方法? 例: 现在,我想像这样重新定义: 因此,当我创建另一个时,新方法将被称为: 编辑: 我意识到我可以输入“ Hello”或“Hola”之类的参数来完成不同的输出。我还意识到我可以像这样简单地为p2分配一个新函数: 我只是想知道是否可以重新定义类的方法,以便的新实例将使用新方法。 问题答案: 以后可以重新定义类的
我想清除大部分别名定义的PowerShell会话,除了cd、sort、mkdir等常见别名 完成会话后,我希望恢复所有以前已知的别名。 无需卸载模块或注销CmdLets。我只想为我的会话清除别名命名空间。 我可以在如下列表中指定允许的别名: 如何保存和恢复别名? 或 如何启动一个干净的PoSh并只加载基本别名? 以下几行来自我的示例模块。 用法示例: 不幸的是,dir Alias:在调用我的脚本后
-- 更新:下面是equals()和hashCode()方法。
本文向大家介绍如果用户是其他证券开户交易用户,采用什么方法可以引导用户来东方财富证券开户交易?相关面试题,主要包含被问及如果用户是其他证券开户交易用户,采用什么方法可以引导用户来东方财富证券开户交易?时的应答技巧和注意事项,需要的朋友参考一下
本文向大家介绍JS定义网页表单提交(submit)的方法,包括了JS定义网页表单提交(submit)的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JS定义网页表单提交(submit)的方法。分享给大家供大家参考。具体如下: 这段代码表示网页表单提交时不是提交到指定的页面,而是执行一个特定的函数 希望本文所述对大家的javascript程序设计有所帮助。
问题内容: 是否可以在SQL中的另一个用户定义表类型(嵌套的用户定义表类型)中使用用户定义的表类型。 我有高级发送表中的行的数据表。 请帮助如何将表行中的表数据从 asp.net发送到sql 。通过循环还是有任何简单的方法将嵌套表数据发送到服务器。 问题答案: 不,为什么会这样?这不是SQL Server(或任何关系数据库)的工作方式。 从TechNet的“用户定义的表类型”页面上: 限制 用户定
问题内容: 就像我们使用__ToString一样,有没有一种方法来定义铸造方法? 问题答案: 无需在php中键入强制类型转换。 编辑: 由于这个话题似乎引起一些混乱,我想我要详细说明一下。 在Java之类的语言中,有两种可能带有类型。编译器有一个关于类型的概念,而运行时还有一个关于类型的想法。编译器的类型与变量相关,而运行时引擎则跟踪值的类型(已将其分配给变量)。变量类型在编译时是已知的,而值类型