有没有办法创建一个实例响应任意方法调用的类?
我知道__getattr__(self, attr)当有人试图访问实例的属性时会有一个特殊的方法被调用.我正在寻找类似的东西,使我能够拦截方法调用.期望的行为看起来像这样:
class A(object):
def __methodintercept__(self, method, *args, **kwargs): # is there a special method like this??
print(str(method))
>>> a = A()
>>> a.foomatic()
foomatic
Run Code Online (Sandbox Code Playgroud)
编辑
其他建议的问题没有解决我的情况:我不想包装另一个类或更改第二类或类似的元类.我只想拥有一个响应任意方法调用的类.
感谢jonrshape,我现在知道,__getattr__(self, attr)当调用方法时,也会在访问属性时调用方法.但我怎么区分__getattr__,如果attr来自一个方法调用或属性的访问,以及如何让潜在的方法调用的参数?
我是Haskell的新手并试图玩弄它.因此,我想在文件中定义一些函数,然后加载它们ghci.
我有一个文件tryout.hl,我想要ghci使用
:l tryout或加载:load tryout.hl.我得到了这两个命令target ‘tryout’ is not a module name or a source file.
我究竟做错了什么?
这是我的shell历史:
[user@pc](~/proggin/haskell)$ ls -lah
total 12K
drwxr-xr-x 2 user users 4.0K Oct 14 05:07 .
drwxr-xr-x 14 user users 4.0K Oct 13 07:51 ..
-rw-r--r-- 1 user users 138 Oct 14 05:07 tryout.hl
[user@pc](~/proggin/haskell)$ cat tryout.hl
take' :: (Num i, Ord i) => i -> [a] -> [a]
take' n _
| n …Run Code Online (Sandbox Code Playgroud)