簡體   English   中英

如何在當前 class 方法中創建當前 class 的新實例?

[英]How to create new instance of current class inside the current class method?

我有一個 class。 在“完成”方法中,我想創建這個 class 的新實例並將其添加到數組中。 但相反,它只是將我當前的實例添加到數組中。 如何使用此方法創建新實例?

class Task:

    ArrPosition = 0

    def __init__(self, content, state, arr):
        self.content = content
        self.state = state
        self.arr = arr

    def Complete(self, Answer, CurrentPosition):
        if Answer == "True":
            self.state = "True"
            self.ArrPosition += 1
            if self.ArrPosition < 4:
                SessionArray[CurrentPosition + self.arr[self.ArrPosition]].append(Task(self.content, "NULL", [0,2,6,10]))
        if Answer == "False":
            self.state = "True"
            self.ArrPosition = 0
            SessionArray[CurrentPosition + 1].append(Task(self.content, "NULL", [0,2,6,10]))

其他示例顯示了如何在 class 描述之外執行此操作,但我需要在內部執行此操作。

解決了

class Task:

    ArrPosition = 0

    def __init__(self, ArrPosition, content, state, arr):
        self.ArrPosition = ArrPosition
        self.content = content
        self.state = state
        self.arr = arr

    def Clone(self):
        return Task(self.ArrPosition, self.content, "NULL", self.arr)

    def Complete(self, Answer, CurrentPosition):
        if Answer == "True":
            self.state = "True"
            self.ArrPosition += 1
            if self.ArrPosition < 4:
                SessionArray[CurrentPosition + self.arr[self.ArrPosition]].append(Task.Clone(self))
        if Answer == "False":
            self.state = "False"
            self.ArrPosition = 0
            SessionArray[CurrentPosition + 1].append(Task.Clone(self))

我在控制台上檢查了腳本,沒有進行任何更改,它在為Task構造函數、 Complete方法的 arguments 和SessionArray變量選擇了一些任意值時運行良好:

在此處輸入圖像描述

問題的原因可能是代碼中的其他地方,可能是您輸入的一些不穩定的輸入。

暫無
暫無

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

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