/ / wyścig w metodach python - python

stan wyścigu w metodach Pythona - python

Mam 2 metody wywołuję w pętli jeden po drugim

main.py (wartość jest obiektem)

    for value in valueList:
value.A()
value.B()

Object.py (definicja obiektów)

    def A(self):
self.quantity = 10

def B(self):
self.quantity = self.quantity + 1

w funkcji B () im otrzymuje błąd atrybutu, że ilość nie została znaleziona, a program wyprzedza B () zamiast kończenia wykonywania A () najpierw

jak mogę się upewnić, że B () zostanie wykonane dopiero po zakończeniu A () bez wywoływania B () z A ()

Dostarczam tutaj pełny kod obu metod:

              def getYesterdayPosition(self,Pos,csvInstruments):
for data in csvInstruments:
if data["segment"] == "NFO-FUT":
if data["tradingsymbol"] == self.derivative:
for entry in Pos:
if self.derivative == entry["tradingsymbol"]:
quantity = int(entry["quantity"])
self.yesterdays_position = quantity/data["lot_size"]


def getPositionDiff(self):
if self.yesterdays_position == self.indices:
self.trade = 0.0
elif self.yesterdays_position > self.indices:
self.trade = -(self.yesterdays_position - self.indices)
elif self.yesterdays_position < self.indices:
self.trade = self.yesterdays_position - self.indices

błąd nadchodzi w funkcji getPositionDiff (), gdzie mówi, że nie może znaleźć pozycji yesterdays

main.py tak się nazywają

              for value in orderList:
value.getYesterdayPosition(jsonPositions["net"],csvInstruments)
value.getPositionDiff()

Odpowiedzi:

0 dla odpowiedzi № 1

Nie wiem, co robi twój kod. Problemem jest jednak metoda getYesterdayPosition

Wewnątrz getYesterdayPosition masz tyle jeśli warunki. Każda z nich ulega awarii, a self.yesterdays_position nie jest deklarowana.

lepiej zastosuj warunek else i ustaw wartość dla Fałszywych przypadków.