@Martjin Pieters完全正确。为了说明这一点,请尝试此修改some_dict = {}
for i in range(2):
def fun(self, *args):
print i
fun.__doc__ = "I am function {}".format(i)
fun.__name__ = "function_{}".format(i)
some_dict["function_{}".format(i)] = fun
print "id",id(fun)
my_type = type("my_type", (object,), some_dict)
m = my_type()
print id(m.function_0)
print id(m.function_1)
print m.function_0.__doc__
print m.function_1.__doc__
print m.function_0.__name__
print m.function_1.__name__
print m.function_0()
print m.function_1()
c = my_type()
print c
print id(c.function_0)
你会发现每次的乐趣都是一个不同的id,和最后一个不同。方法创建逻辑发送指向同一个位置的方法创建逻辑,因为这是类代码的存储位置。另外,如果您将my\u类型用作一种类,那么用它创建的实例对于该函数具有相同的内存地址
此代码给出:
id 4299601152
id 4299601272
4299376112
4299376112
我是函数0
我是功能1
函数0
功能1
1
无
1
无
<;main.my\u类型对象位于0x10047c350>;
4299376112