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 に答える