小编sma*_*ane的帖子

用户定义的__mul__方法不可交换

我编写了一个用Python表示向量的类(作为练习),我在扩展内置运算符方面遇到了问题.

__mul__为vector类定义了一个方法.问题是在表达式中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
Run Code Online (Sandbox Code Playgroud)

但这需要重新定义我想用于用户定义的类的每个函数.

有没有办法让内置函数正确处理?

python built-in extend

23
推荐指数
1
解决办法
7616
查看次数

在lisp中可变的麻烦

我正在使用Common Lisp编写一个程序,我需要一个具有这个基本大纲的函数:

(defun example (initial-state modify mod-list)
  (loop for modification in mod-list
        collecting (funcall modify initial-state modification)))
Run Code Online (Sandbox Code Playgroud)

问题是我initial-state每次传递都需要相同modify,但modify可能具有破坏性.我只是复制一份,但我不想对什么类型的数据做出任何假设initial-state.

我怎样才能做到这一点?或者甚至可能吗?

谢谢!

lisp variables common-lisp

6
推荐指数
1
解决办法
162
查看次数

为什么Mathematica不会在数字上评估此RecurrenceTable?

我正试图RecurrenceTable在Mathematica中使用条件,并且递归的东西正常工作,但它不会完全评估它.

In:= RecurrenceTable[{x[n] == If[Mod[n, 2] == 0, x[n - 1], y[n - 1]], 
       y[n] == If[Mod[n, 2] == 0, R x[n - 1] (1 - x[n - 1]), y[n - 1]], 
       x[1] == x0, y[1] == 0}, {x, y}, {n, 1, 10}]

Out:= {{0.25, 0.}, {x[1], 3 (1 - x[1]) x[1]}, {y[2], y[2]}, {x[3], 
        3 (1 - x[3]) x[3]}, {y[4], y[4]}, {x[5], 3 (1 - x[5]) x[5]}, {y[6], 
        y[6]}, {x[7], 3 (1 - x[7]) x[7]}, {y[8], y[8]}, …
Run Code Online (Sandbox Code Playgroud)

recurrence wolfram-mathematica

3
推荐指数
1
解决办法
860
查看次数