2

私はPython2.7を初めて使用し、これに関する答えを数時間探していたので、ここで最初の質問をオーバーフローで行うことにしました。いつの日か、いつも潜んでいるのではなく、コミュニティに何かを追加したいと思っています>。<

私はプロジェクト管理ツールを作成しています。このツールでは、プロジェクトの下に必須の基本タスクと、基本タスクから継承された他のサブタスクを定義します。最大限の柔軟性を得るには、プロジェクトクラスの下にジェネリックタスククラスを作成するのが最善だと思います。ユーザーがサブタスクを作成する場合、ベースタスクから継承します。基本タスクに1時間の値を割り当てたいと思います。これは、サブタスクがない場合はユーザー定義であり、サブタスクがある場合はすべてのサブタスクによって定義された時間の合計によって定義されます。

これまでのところ、これは私が持っているものです...:

class Task(self, superOBJ):
    #Define Tasks That Conform To SOW Here
    def __init__(self,cls,title):
        self.title=title
        self.description=""
        self.hours=None
    def Hours(self):
        if #NO SUBTASKS
            return self.hours
        else:
            return #SUM OF SUBTASKHOURS

    def SetHours(self,super,hours):
        self.hours=hours

これは私が立ち往生しているところです私はいくつかのアイデアを持っていますが、それらを見抜く深さはありません

だから私の質問は、継承を処理するための「良い」方法は何ですか?ここで役立つ魔法の方法はありますか?

4

2 に答える 2

2

各サブタスクは、から派生した新しいクラスのインスタンスであるべきだと提案しているようですTask。もしそうなら、そのアプローチを避けることをお勧めします。Task作成しようとしているものは、各タスク オブジェクトが子タスク (サブタスク) のリスト (場合によっては空の) を保持するインスタンスのツリーによって簡単にモデル化できます。次に、子タスク リストを再帰的に反復して、特定のタスク (つまり、メソッドのelseHours) の下のリーフ ノードに時間を累積することで、タスクに必要な時間を計算できます。

ある時点で、から派生したタスクの新しいクラスを定義する十分な理由があるかもしれませんが、Taskそれは、たとえば時間の計算方法に関連するある種の特別な動作がある場合にのみ行う必要があります。

于 2013-02-06T18:10:19.360 に答える
0

慣例として、「ベース タスク」のクラスTaskと、タスクのベース クラスを呼び出します。 BaseTask

class BaseTask(object):
    '''change object to BaseProject whenever you figure out what your `Project`
    class should be, or if you need it at all'''

    def __init__(self, title):
        self.title = title
        self.description=""

class Task(BaseTask):
    def __init__(self, title):
        super(Task, self).__init__(title)
        self.subtasks = []
        self.default_hours = 1

    @property
    def hours(self):
        if len(self.subtasks) < 1:
            return self.default_hours
        return sum(subtask.hours for subtask in self.subtasks)

class SubTask(BaseTask):
    def __init__(self, title):
        super(SubTask, self).__init__(title)
        self.hours = 0

それは基本的にそれがどのように見えるべきかです。好みに合わせて変更を加えることができます。一般に、継承構成の違いを学ぶ必要があります。ここでは、 と の両方がTaskからSubTask継承されBaseTaskていますが、多くのTask構成されていますSubTask

于 2013-02-06T18:24:06.957 に答える