我有一个会创建多个实例的类。制作一个方法和调用该方法与制作一个类和一个函数然后在类上使用该函数之间的区别是什么?第一个会花费更多内存,因为该方法是“实例化的”吗?
示例:
class myclass:
def __init__(self):
self.a=0
def mymethod:
print self.a
inst1=myclass()
myclass.mymethod
与
class myclass:
def __init__(self):
self.a=0
def myfunction(instance):
print instance.a
inst1=myclass()
myfunction(inst1)
答案 0 :(得分:4)
方法实际上只是始终接收类实例作为第一个参数的函数(并且碰巧在类的范围内声明)。方法的代码在所有实例之间共享,因此每次创建类实例时都不会“实例化”方法。
所以,他们真的是等同的;你使用任何最明确的意图表达(可读性计数!)。如果您正在编写一个始终将特定类的实例作为参数的函数,则它可能最清楚地表示为方法。如果函数可以在许多不同类上运行,那么它可能是最清晰的函数。