将变量归为特定对象下是很方便的。
我的使用场景是tensorflow,你经常需要先定义一个图形,然后再用实际数据进行填充。为了避免混淆图形变量和数据变量的名称,将它们全部归为一个对象是非常有用的。我一直在做的是:
g = lambda: None
g.iterator = tf.data.Dataset.from_tensor_slices((x_train, y_train)).batch(minibatch_size).make_initializable_iterator()
g.x_next, g.y_next = g.iterator.get_next()
g.data_updates = g.x_data.assign(g.x_next), g.y_data.assign(g.y_next)
如果你使用lambda: None
,那么你的同事很可能会感到愤怒和困惑。
有没有一种替代方案,提供同样简洁的语法,但使用的是更明显的容器而不是lambda: None
?
我最初尝试将它们全部作为类的静态成员,但问题是静态成员不能引用其他静态成员。 g=object()
很好,但不允许你分配属性。
types.SimpleNamespace
怎么样? - Aran-Feyobject
,那么你已经拥有了一堆非常有用的方法。 - Cong Ma