0

複数のクラスを含むモジュールを作成しようとしています。すべてのクラスで同じ変数名が必要ですが、値は異なる必要があります。すべての定義が、独自のクラスの先頭で定義された変数を使用するようにします。

例えば:

class assign():
    global a , b
    a = 1
    b = 2

    def aa(x):
        return  a*x



class assign1():
    global a, b
    a = 5
    b = 10


    def aa(x) :
        return a*x

これにより以下が生成されます。

print(assign.aa(3))
=15

print(assign1.aa(3))
=15

グローバル値は、異なるクラス間で切り替えられません。そうであってほしいです。

4

1 に答える 1

1

興味深い-私はこれまでglobalクラスの名前空間で見たことがありません...基本的に何が起こるかは、クラスを作成し、グローバル名前空間に追加することaですb。次に、メソッド呼び出しでa、グローバル名前空間から取得します(ローカル変数がないためa)。あなたがおそらく望んでいたのは:

#while we're at it, get in the habit of inheriting from object
# It just makes things nicer ...
class assign(object): 
    a = 1
    b = 2

    def aa(self,x):
        return  self.a*x


class assign1(object):
    a = 5
    b = 10

    def aa(self,x) :
        return self.a*x

これで、メソッドを呼び出すと、Pythonは最初にインスタンスaaの属性を探します。aインスタンスで見つからない場合は、クラスがチェックされます(クラスには両方ともa属性があるため、使用されます)。

于 2013-02-06T04:52:04.650 に答える