2

我有一个可以创建多个实例的类。创建一个方法和调用该方法与创建一个类和一个函数然后在类上使用该函数有什么区别?第一个是否因为该方法是“实例化”而消耗更多内存?

例子:

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)
4

1 回答 1

4

方法实际上只是总是接收类实例作为第一个参数的函数(并且恰好在类的范围内声明)。方法的代码在所有实例之间共享,因此您不会在每次创建类实例时都“实例化”方法。

所以,它们真的是等价的;你使用任何最清楚地表达你的意图的东西(可读性很重要!)。如果您正在编写一个始终将特定类的实例作为参数的函数,那么它可能最清楚地表示为方法。如果该函数可以对许多不同种类的类进行操作,那么它作为一个函数可能是最清晰的。

于 2013-02-07T00:05:08.723 回答