在类函数内部定义类函数:Python
我有一段代码,我想在一个类的函数里面定义另一个函数。下面是一个更简单的例子,展示我想做的事情。这个程序的目标是打印出数字4。
>>> class bluh:
... def haha(self):
... print 3
... def __init__(self):
... def haha(self):
... print 4
...
>>> x = bluh()
>>> x.haha()
3
我应该怎么写这个程序才能实现我的目标呢?
2 个回答
0
这段话的意思是,你可以通过一个实例给一个类添加方法。虽然在大多数情况下,这并不是你想要做的事情,但这个语言让这件事变得非常简单。
class A(object):
def __init__(self):
def foo(self):
print "bar"
self.__class__.foo = foo
使用这种技巧是有道理的,特别是在你需要构建一些基于数据的自我修改代码时(不过对我们大多数人来说,这并不是每天都会遇到的情况)。
9
这其实要看你想做什么。
>>> class Foo(object):
... def haha(self):
... print 3
... def __init__(self):
... def haha():
... print 4
... self.haha = haha
...
>>> a = Foo()
>>> a.haha
<function haha at 0x7f4539e25aa0>
>>> a.haha()
4
在之前的例子中,haha
实际上并不是一个方法——它只是一个函数。不过,它会从闭包中获取一个对 self
的引用,很多时候,这样就足够了。如果你真的想给一个实例添加一个新的方法,你需要使用 types.MethodType
。想要了解更多,可以查看 这里 的例子。