簡體   English   中英

在python中調用父類

[英]Calling parent class in python

我的問題是在另一個類中調用類。 獨立地,我可以設置這兩個類的工作方式。 我就是不能讓他們一起工作。 我希望我的數據集(這是足球賽程和結果)傳遞給一個類聯賽,它包含所有聯賽信息,然后該聯賽中的每支球隊都在類 Team 中,該類是父類聯賽的子類。 示例僅顯示了如何設置的片段

在示例的底部,您將看到函數 'total_attack_strength_home(self):' 在這里,我需要訪問類 Team,但計算的最后部分引用了相應的類對象(俱樂部所在的聯賽)。 對此的任何幫助將不勝感激。 謝謝

'''

class League(): 
    def init(self,league): 
        self.league = league 
        self.total_goals_scored = self.get_total_goals_scored() 
        self.home_goals_scored = self.get_home_goals_scored()
    def get_total_goals_scored(self):
        pass
    def get_home_goals_scored(self):
        pass


class Team(League): 
    def init(self,club): 
    self.club = club 
    self.home_wins = self.get_home_wins() 
    self.home_draws = self.get_home_draws()

    def total_attack_strength(self):
        if len(self.total_goals) == 0:
            attack_strength = 0
        else:
            attack_strength = (sum(self.total_goals) / len(self.total_goals)) / ***(total_goals_scored/games_played)***
        return attack_strength'''

有一些變量似乎沒有在任何地方定義,所以我假設這只是一個片段示例。

如前所述,當您希望父類代碼運行時,請使用super 所以在孩子的init ,拋出一個super().__init__()來讓父母的init運行。 如果您只是嘗試訪問父母屬性,請記住您繼承了這些屬性。 因此, self.foo將自動獲得您或您父母對foo定義,以最后發生的為准(在大多數情況下將是孩子的)。

我認為你的類 League 應該是抽象的(將實現委托給子類)。

喜歡:

import abc
class League(metaclass=abc.ABCMeta):
    ....

    @abc.abstractmethod
    def get_total_goals_scored(self):
        pass

然后你需要在你的 Team 類中實現它。

除了已經評論的內容(考慮使用組合而不是繼承)並且缺少在子類上調用父構造函數

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM