在函数副本上设置属性也会影响原始函数。为什么?

时间:2016-05-21 13:15:25

标签: r functional-programming

在将属性设置为函数副本时,我观察到一种奇怪且完全出乎意料的行为:该属性也(隐含地!)设置为复制的函数。

  • 这种行为的解释是什么?
  • 是否有用(即是否存在利用此行为的标准包的示例)?

示例:

import numpy as np
import matplotlib.pylab as pl
import matplotlib.gridspec as gridspec

# Create 2x2 sub plots
gs = gridspec.GridSpec(2, 2)

pl.figure()
ax = pl.subplot(gs[0, 0]) # row 0, col 0
pl.plot([0,1])

ax = pl.subplot(gs[0, 1]) # row 0, col 1
pl.plot([0,1])

ax = pl.subplot(gs[1, :]) # row 1, span all columns
pl.plot([0,1])

请注意,在以下情况下不会发生此行为:

v <- is.integer
attr(v, "foo") <- "bar"
attr(is.integer, "foo")
#> "bar" <------------------------- WHY ?

0 个答案:

没有答案