通过方法或构造函数将对象传递给其他对象?

2024-05-28 20:13:17 发布

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

情况是这样的。我有以下伪类:

class Agent:
    def __init__(self):
       self.blah = whatever
       self.boo = thingy

    def doA(self, transport):
       res = transport.doX(self.blah)

    def doB(self, transport):
       res = transport.doY(self.boo)

class Transport:
    def __init__(self):
        self.bah = weee

    def doX(self, item):
        #.. do some other stuff here

    def doY(self, item):
        #.. do some more stuff here

现在,我的问题是-我应该将传输对象传递给需要它的方法的代理方法,还是应该将传输对象简单地传递给代理构造函数并从方法中调用它?工业工程

transport = Transport()
agent = Agent(transport)
class Agent:
    def __init__(self, transport):
        self.blah = whatever
        self.transport = transport

    def doA(self):
        res = self.transport.doX(self.blah)

我把交通工具搬到自己的班级的原因是:

1)代理实例可以共享同一个传输对象——即:一组代理只需要一个传输对象。我可以有多个传输(一个用于agentsA..N,另一个用于agentsO..Z)。

2)传输包含将代理列表作为参数的方法。例如,它可以在给定代理对象列表的情况下运行与代理的并发通信测试。

但是,代理本身有时需要在传输(SSL证书的位置等)中为某些方法设置属性,这些方法在代理类中是有意义的(远程重新启动代理等)。

我是否应该采用需要代理列表的方法,并将它们移动为传输的类方法,然后在包含传输实例的代理对象中创建属性?我是否应该继续我正在做的事情,并要求将传输对象传递给某些代理对象方法?我应该以某种我看不到的方式重构这些内容吗?

任何有帮助的意见都将不胜感激。


Tags: 对象方法self代理列表initdef情况

热门问题