我定义了在子程序和子子程序下进化的对象。我想通过探测器来探测这些变量的状态。
例如,让我们把这个类叫做醉。
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,优雅等)来做到这一点。你有什么看法?你会采取什么方法?