주어진 코드에서 목록 x와 y는 임의의 확률 0.5로 0-N 사이에서 임의로 할당 된 숫자입니다. 저는 임의로 에이전트를 선택하고 func1을 사용하여 제거합니다. func2를 사용하여 하나의 에이전트를 추가하고 있습니다. 이제 두 개의 클래스 객체 x1과 x2를 정의했습니다. x2의 입력 인자 'state1'은 x1로부터 얻어지고, 마찬가지로 x1의 'state2'는 x2로부터 얻어진다.Python에서 클래스의 인수 전달
x1 및 x2에 'state2'및 'state1'인수를 전달하는 올바른 방법을 찾을 수 없습니다. 내 코드의 마지막 네 줄에서 알 수 있듯이 state1과 state2는 x1과 x2보다 먼저 정의해야하지만 클래스 개체 인 x1과 x2를 먼저 정의해야합니다.
나는 여기에서 다음을 시도하고있다 : 나는 두 개체군 N1과 N2를 가지고있다. 나는 N1에서 하나의 에이전트 (state1)를 무작위로 선택하여 N2에 추가합니다 (state = state1 유지). 동시에 N2에서 하나의 에이전트를 제거하고 (state2) N1 인구에 추가합니다 (상태 = state2 유지). 이 프로세스는 고정 된 시간 간격으로 반복됩니다.
누군가 내게 올바른 방법을 알려주고 코드를 실행할 수 있습니까?
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
나는 네가 말하는 말이 정확하다는 것을 안다. 하지만 비슷한 문제가 붙어 있습니다. state1과 state2에 대해 초기 값을 지정하면 (= 1), 내 코드는 매번 동일한 state1과 state2 값을 가져 오지 않습니다. 내 접근 방식이 올바르지 않을 수도 있다는 것을 알고 있으므로 제안을 요청하는 것입니다. – ADK
@iajay 들여 쓰기가 잘못되었다고 생각합니다. 여기 보이는 것처럼 많은 코드는 인스턴스 생성 시간이 아니라 클래스 생성 시간에'self'가 없을 때 실행됩니다. – glglgl