繁体   English   中英

正确的python语法建议

[英]suggestion for correct python syntax

我正在尝试设计一种包含类组合的配置模式。 假设我们有一堂课。

class Node(object):
    def __init__(self,a,b):
        self.a = a
        self.b = b

现在我想设计一个配置模式,我想定义这样的东西或它的变体。

Workflow = Node(1,2) & ( Node(4,2) | Node(5,6) ) & Node(1,7)

我实际上想将其保存在文件中,然后稍后再提取,然后断开所有节点,并按此处定义的相同顺序使用它们。 但这在语法上是不正确的。 您能建议我一些替代方法吗? 我可以使用上面定义的相同模式吗?

我不想使用字典和列表来保存它们,因为它们仅提供“,”作为分隔符。 而且字典没有排序,我将松开定义配置或节点的顺序。

如果您希望能够支持从Node s构建Workflow语法,那么您应该能够使用运算符重载来做到这一点。 这是关于可以在Python中重载的运算符的出色快速参考

如@AshwiniChaudhary所建议, pickle模块可以处理将Python对象存储在文件中。

不确定您的问题,但是如果要存储一个任意的配置树,我建议您尽可能使用“正常”数据类型。 这样,您的配置数据将更加易于存储和可移植性。

关于语义和顺序,您始终可以执行以下操作(有点类似于Lisp):

conf = [
    ['Workflow',
        ['and',
            ['Node', 1, 2],
            ['or',
                ['Node', 4, 2],
                ['Node', 5, 6]
            ],
            ['Node', 1, 7]
        ]
    ]
]

如果对您的人来说太丑陋了,您可以使用YAML (尽管不是在核心Python库中;请使用PyYaml ):

- - Workflow
  - - and
    - [Node, 1, 2]
    - - or
      - [Node, 4, 2]
      - [Node, 5, 6]
    - [Node, 1, 7]

(请注意,我对运算符使用小写字母,对类使用大写字母。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM