对象与分配给变量的函数之间的横向关联

时间:2011-09-10 18:59:53

标签: python oop

我定义了在子程序和子子程序下进化的对象。我想通过探测器来探测这些变量的状态。

例如,让我们把这个类叫做醉。

class drunk (object):
    def __init__(self):
        self.position = 0
        self.probability = 0.5
    def take_a_step():
        # code that will make the drunkard change its position

然后,我可能会产生许多酒鬼并将他们放入一群人群中。

class crowd (object):
    def __init__(self):
        self.inidividuals = num.array([])

我想创建一个可以分配到任何这些对象的“探测”对象,但是我遇到了实现问题。

class probe (object):
    def __init__(self):
        self.function = None
        self.data = num.array([])

我想将探测器分配给任何一个酒鬼,一个探测器将从人群或醉酒中提取任何信息,该信息在probe.function中的函数中定义。

但就我而言,我可以通过将探测器放入这些类中的列表来分配探测器,并通过与类人群和醉酒方法中的函数相关来调用它们。

但为了做到这一点,

probe_mean = probe()
def probe_function():
    #
    #
    #
probe_mean.function = probe_function()

但是因为我想引用一个类中的变量,该函数将在列表中,似乎我必须将函数定义为

但为了做到这一点,

probe_mean = probe()
def probe_function(probed):
    return probed.position.mean()
probe_mean.function = probe_function(drunk_53)

drunk_53.probes.append(probe_mean)

我感觉这些对象应该相互引用才能使它工作,这不是他应该的方式。

我认为必须有办法解决这个问题而不重新将drunk_53引入函数,类似于super(),它将启用垂直关联。

我没有OOP经验,所以我要求最合适的方式(Pythonic,优雅等)来做到这一点。你有什么看法?你会采取什么方法?

0 个答案:

没有答案