0

まず第一に、私の英語を失礼します。

Pythonで簡単なクラスアプリケーションを実行しようとしています。コンセプトはこんな感じ。

    class Auth:
            def __init__(self, username, password):
                self.username = username
                self.password = password
            def connect(self):
                """here is the code for connecting into X server"""
                pass

    class Manager(Auth):
        """used for search auctions, for example"""
        def __init__(self, username, password):
            Auth.__init__(self, username, password)
        def pile(self):
            y = self.some_search_into_a_server()
            for x in y:
                yield Auction(x)
        def buy(self):
            """buy method for using by auction"""
            pass

    class Auction:
        def __init__(self, auction):
            self.id = auction["id"]
            self.some_data = auction["some_data"]

さて、ここでのポイントは、私がやりたいことは次のようなものです。

manager = Manager('user@example.com', 'a_very_secure_password')
for auction in manager.pile():
    auction.buy()

ここでの問題は次のとおりです。マネージャーがオークションから継承し、Aucionがメソッド購入を使用するようにするにはどうすればよいですか。

4

1 に答える 1

2

XがYの場合、継承が必要です。たとえば、動物プードル犬です。

XにYがある場合は、メンバーシップが必要です。たとえば、所有者がいる場合や、店舗顧客がいる場合などです。

オークションにはマネージャーがいるという事実に基づいています。継承ではなくメンバーシップを希望する可能性があります

class Auction:
    def __init__(self, manager,auction):
        self.id = auction["id"]
        self.manager = manager
        self.some_data = auction["some_data"]
    def buy(self):
          return self.manager.buy()

class Manager(Auth):
    """used for search auctions, for example"""
    def __init__(self, username, password):
        Auth.__init__(self, username, password)
    def pile(self):
        y = self.some_search_into_a_server()
        for x in y:
            yield Auction(self,x)
    def buy(self):
        """buy method for using by auction"""
        pass

manager = Manager('user@example.com', 'a_very_secure_password')
for auction in manager.pile():
    auction.buy()
于 2012-10-04T17:29:44.450 に答える