用Python在类中传递参数

2024-04-23 22:44:00 发布

您现在位置:Python中文网/ 问答频道 /正文

在给定的代码中,列表x和y是0-N之间随机分配的数字,概率为0.5。我随机选择一个代理并使用func1删除它。我正在使用func2添加一个代理。现在我定义了两个类对象x1和x2。x2的输入参数'state1'从x1获得,类似地,x1的'state2'从x2获得。你知道吗

我无法找到在x1和x2中传递参数“state2”和“state1”的正确方法。 从我的代码的最后四行可以看出,state1和state2应该在x1和x2之前定义,但我不能这样做,因为类对象x1和x2应该像我那样首先定义。你知道吗

我要达到的目标是:我有两个种群N1和N2。我从N1中随机选择一个代理(比如state1)并将其添加到N2中(保留其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()

Tags: self代理returnifrandomagentstatex1
1条回答
网友
1楼 · 发布于 2024-04-23 22:44:00

您可以从状态构造函数中删除第二个参数,然后在set_state(state)这样的单独方法中传递它。你知道吗

例如:

x1 = state(N1)
x2 = state(N2)

state1 = func.func1()
state2 = func.func2()

setState(x1, state2)
setState(x2, state1)

在state函数中,必须将state参数和相关代码剥离到新函数setState。我没有看到那个代码,所以我不能在这里显示。你知道吗

相关问题 更多 >