Squ*_*art 6 python memory function instances
如果我有一个具有多个功能的类:
class Example:
def func1(self):
print 'Hi1'
def func2(self):
print 'Hi2'
def func3(self):
print 'Hi3'
Run Code Online (Sandbox Code Playgroud)
如果我创建了几个'Example'实例,那么每个实例是否在类中存储了自己的函数副本?或者,Python是否只有一种智能方式来存储定义,并且每次实例使用类中的函数时都会查找它?
另外,静态功能呢?该类只保留每个静态函数的一个副本吗?
Sve*_*ach 13
实例化类时,不会为实例方法或静态方法创建新的函数对象.当访问实例方法时obj.func1,会创建一个名为"绑定方法"的新包装器对象,该对象将仅在需要时保留.包装器对象是轻量级的,基本上包含指向底层函数对象和实例的指针(self当调用函数时,它作为参数传递).
请注意,staticmethod在Python 中使用几乎总是一个错误.它的存在归咎于历史错误.如果您认为需要静态方法,通常需要模块级函数.
| 归档时间: |
|
| 查看次数: |
1766 次 |
| 最近记录: |