-1

私はPythonのOOPの実装を理解しようとしています。

基本的に、他のすべてのクラスがメソッドの入力として使用するいくつかのグローバル属性を定義するスーパークラスが必要です。例えば:

これは私がそれを行うべきだと思った方法です:

class One():
    def __init__(self, name):
         self.name = name

class Two(One):
     def __init__(self, name):    # name from class one...
         One.__init__(self, name)          
     def method_using_name_from_one(self, name_from_one):
         return name_from_one

クラス1のメソッドのようにクラス内のすべてのメソッドを宣言するだけでこれを行うことができるとTwo思いますが、それらを分離することをお勧めします。要約すると、クラス2のメソッドのパラメーターで、クラスで宣言された属性を使用する必要がありますOneTwoしたがって、基本的には、インスタンス化されたオブジェクトをクラスメソッドのパラメーター引数として渡したいと考えています。

4

1 に答える 1

0

あなたが言う時

class Two(One):

1 つは のパラメータではありませんclass Two。つまり、クラス 2 はクラス 1 から継承されます。つまり、メソッドをオーバーライドしない限り、クラス One が持つすべてのものを取得します。編集:私がこれを言うとき、私はパラメータと関数を意味します.クラスのインスタンスを意味するのではありません. あなたが持っているので:

def __init__(self, name):    # name from class one...
    One.__init__(self, name) 

self.name は、class Two.つまり、次のように言えます...

 def method_using_name_from_one(self):
     return self.name

私が提案することの1つは、クラス1の宣言を次のように変更することです:

 class One(object):

これは、オブジェクトから継承することを意味し、オブジェクトが渡されることを意味するわけではありません:)これはあなたが意図したことですか? 正しく理解できていなかったのかもしれません。

name パラメーターがOne,必要な場合は、次のように言うことができます

 def method_using_name_from_one(self, oneInstance):
     return oneInstance.name
于 2013-08-01T22:49:53.513 に答える