В данном коде списки x и y являются случайными номерами между 0-N с некоторой вероятностью 0,5. Я случайно выбираю агента и удаляю его с помощью func1. Я добавляю один агент, используя func2. Теперь я определил два объекта класса x1 и x2. Входной аргумент 'state1' из x2 получается из x1, и аналогично 'state2' из x1 получается из x2.Передача аргументов в классе в Python
Я не могу найти правильный способ передачи аргументов «state2» и «state1» в x1 и x2. Как вы можете видеть из последних четырех строк моего кода, state1 и state2 должны быть определены до x1 и x2, но я не могу этого сделать, поскольку объекты класса x1 и x2 должны быть определены сначала так же, как и я.
То, что я пытаюсь достичь здесь, следующее: у меня две популяции N1 и N2. Я произвольно выбираю один агент (скажем, состояние 1) из N1 и добавляю его (сохраняя его состояние = состояние1) до N2. В то же время я удаляю один агент из N2 (скажем, состояние2) и добавляя его (сохраняя его состояние = состояние2) к N1-популяции. Этот процесс повторяется с течением времени с фиксированным интервалом времени.
Может ли кто-нибудь сказать мне правильный способ сделать это и сделать код запущенным?
import random
class func():
def __init__(self, N, state):
self.N = N
self.x = []
self.y = []
agents = range(self.N)
for i in range(self.N):
if random.random() < 0.5:
self.x.append(i)
else:
self.y.append(i)
agent = random.choice(agents)
def func1(self, agent):
if self.agent in self.x:
self.x.remove(agent)
return 1
elif self.agent in self.y:
self.y.remove(agent)
return 2
def func2(self, state):
if state == 1:
self.x.append(N)
return self.x
elif state == 2:
self.y.append(N)
return self.y
if __name__=='__main__':
N1 = 100
N2 = 100
x1 = state(N1, state2)
x2 = state(N2, state1)
state1 = func.func1()
state2 = func.func1()
Вы просто не можете. Если 'x1' нуждается в состоянии из' x2', который нуждается в состоянии от 'x1', который нуждается ... как вы когда-нибудь начинаете? – jonrsharpe
Я знаю, что вы говорите правильно. Но у меня такая же проблема. Если я назначу некоторые начальные значения для состояния1 и state2 say (= 1), мой код не будет принимать одинаковые значения для состояний1 и состояния2 каждый раз. Я знаю, что мой подход может быть неправильным, поэтому я прошу предложения. – ADK
@iajay Я думаю, что вы вдавливаете также неправильно. Как это выглядит здесь, большая часть кода работает не во время создания экземпляра, а во время создания класса, когда еще нет 'self'. – glglgl