Python通用容器?

时间:2018-03-05 16:19:27

标签: python

有人可以方便地将变量分组到给定对象下。

我的用例是张量流,您通常必须首先定义图形,然后用实际数据提供图形。为了避免将图形变量的名称与数据变量的名称混淆,将它们全部分组到一个对象下是有用的。我一直在做的是:

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()会很好,但不允许你分配属性。

1 个答案:

答案 0 :(得分:4)

如果不值得定义一个专门的类,你可以使用types.SimpleNamespace,这是一个专门设计的类,除了保存属性外什么都不做。

g = types.SimpleNamespace()
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)