Path: csiph.com!fu-berlin.de!uni-berlin.de!not-for-mail From: Peter Otten <__peter__@web.de> Newsgroups: de.comp.lang.python Subject: Re: [Python-de] Konstanten in Struct-Form in Python Date: Sat, 20 Feb 2021 09:37:05 +0100 Lines: 43 Message-ID: References: <27c6feec-669a-8d30-822c-d612d7cc464f@web.de> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit X-Trace: news.uni-berlin.de HY2ktI7CkYxvopRlA+bqGAQAB4EMEWpq24F8fh3cirpg== Return-Path: X-Original-To: python-de@python.org Delivered-To: python-de@mail.python.org Authentication-Results: mail.python.org; dkim=none reason="no signature"; dkim-adsp=none (unprotected policy); dkim-atps=neutral X-Injected-Via-Gmane: http://gmane.org/ User-Agent: Mozilla/5.0 (Windows NT 10.0; rv:78.0) Gecko/20100101 Thunderbird/78.7.1 In-Reply-To: Content-Language: en-US X-BeenThere: python-de@python.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Die Deutsche Python Mailingliste List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Mailman-Original-Message-ID: <27c6feec-669a-8d30-822c-d612d7cc464f@web.de> X-Mailman-Original-References: Xref: csiph.com de.comp.lang.python:5719 On 19/02/2021 15:27, Michael S. wrote: > Hallo Leute, > Ich möchte ein Python Toolset schreiben, mit dem ich sehr einfach auf > Signale in CAN-Botschaften zugreifen kann, die als CAN-Trace vorliegen. > Das parsen des Traces läuft. Nun möchte ich aber die ganzen Infos zu den > CAN-Signalen in einem "Include"-File möglichst einfach zugänglich machen. > Daran scheitere ich. > > > Tatsächlich gibt es zu jeder CAN-Botschaft mehrere Eigenschaften. Ich > hatte das erstmal so codiert: > > class CAN_AC_Voltage: >   def __init__(self): >     self.ID = 16FC8B11 >     self.BitOffset = 48 >     self.BitLength = 8 >     self.Gain = 1 >     self.ValueOffset = 0 >     self.Unit = "V" >     self.Rate = 0.5 > > > Dann könnte ich so zugreifen: > CAN_ACV = CAN_AC_Voltage() > > ID   = CAN_ACV.ID > Unit = CAN_ACV.Unit > > Was mich dran nervt ist, dass jede einzelne CAN-Botschaft eine eigene > Klasse ist und ich die im Code erstmal instanzieren muss, bevor ich sie > nutzen kann. Das muss doch auch einfacher gehen. from types import SimpleNamespace CAN_AC_Voltage = SimpleNamespace( ID=16FC8B11 BitOffset=48 BitLength=8, ... )