擅长:python、mysql、java
<p>简短的版本,是的,但是它比<code>JS</code>复杂一点。在</p>
<p>来自<a href="http://www.ibm.com/developerworks/linux/library/l-pymeta.html" rel="nofollow noreferrer">Metaclass programming in Python</a>:</p>
<pre><code>>>> class ChattyType(type):
... def __new__(cls, name, bases, dct):
... print "Allocating memory for class", name
... return type.__new__(cls, name, bases, dct)
... def __init__(cls, name, bases, dct):
... print "Init'ing (configuring) class", name
... super(ChattyType, cls).__init__(name, bases, dct)
...
>>> X = ChattyType('X',(),{'foo':lambda self:'foo'})
Allocating memory for class X
Init'ing (configuring) class X
>>> X, X().foo()
(<class '__main__.X'>, 'foo')
</code></pre>
<p>同时检查<a href="https://stackoverflow.com/questions/100003/what-is-a-metaclass-in-python">What is a metaclass in Python</a>。在</p>
<p><strong>编辑</strong>:勾选<a href="http://lambda-the-ultimate.org/node/1107" rel="nofollow noreferrer">Prototype based OO</a>,这是最接近的方法,但它总是可以归结为要么使用lambda,要么只是在外部定义函数并将指向它的指针添加到类对象。在</p>