簡體   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