繁体   English   中英

在Python的类中传递参数

[英]Passing arguments in class in 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),并将其添加(保留state = state1)到N2。 同时,我正在从N2中删除一种代理(例如state2),并将其添加(保留其state = state2)到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()

您可以从状态构造函数中删除第二个参数,并在以后通过set_state(state)类的单独方法传递它。

例如:

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

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

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

在状态函数中,必须将状态参数和相关代码剥离到新函数setState中。 我没有看到该代码,因此无法在此处显示。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM