Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > de.comp.lang.python > #5871

Re: [Python-de] Re: Code Style Review

From Marc Haber <mh+usenetspam1118@zugschl.us>
Newsgroups de.comp.lang.python
Subject Re: [Python-de] Re: Code Style Review
Date 2022-11-29 15:22 +0100
Organization private site, see http://www.zugschlus.de/ for details
Message-ID <tm54jr$1p8p5$1@news1.tnib.de> (permalink)
References <tm2jhn$1k5h8$1@news1.tnib.de> <480b80d21e58d280c437b4854bfc7cf1@posteo.de> <tm372k$1lddf$1@news1.tnib.de> <7255f3485a4745df69dc13cedf68e8b0@posteo.de>

Show all headers | View raw


c.buhtz@posteo.jp wrote:
>Am 28.11.2022 21:52 schrieb Marc Haber:
>> Das sehe ich mindestens teilweise anders. Wenn ich irgendwo explizit
>> hinschreibe, dass eine Funktion eine globale Variable verwendet (wie
>> z.B. das dictionary, in dem die Konfiguration drin steht) und der
>> Linter das unkonditional anmeckert nur allein weil das Schlüsselwort
>> benutzt wurde ergibt das für mich keinen Sinn
>
>Auch wenn es radikal klingen mag; Es hat keinen Sinn "global" zu 
>verwenden, auch wenn Python das im Sprachumfang hat. Ein "global" hat 
>sehr viele Nebeneffekte und birgt potentielle Risiken, die den Gewinn 
>nicht aufwiegen. Es gibt andere Lösungen.

Und die wären? Jeder einzelnen Funktion in jedem einzelnen Aufruf das
config-Hash als Parameter mitgeben?

>> Gerade für die Konfiguration halte ich die globale Variable auch für
>> den vernünftigen Weg, das wirklich überall bekannt zu machen.
>
>Nein, ist es nicht. Das ist nur eine "Abkürzung". Besser wäre hier eine 
>Art Singleton-Pattern anzuwenden.
>Sagen wir deine Konfiguration ist in der Klasse "Config".
>
>class Config:
>     @classmethod
>     def instance(cls):
>         # Provide the instance if it exists
>         if cls._instance:
>             return cls._instance
>
>         # But don't created implicit when needed.
>         raise Exception(f'No instance of class "{cls}" exists. '
>                         'Create an instance first.')
>
>     def __init__(self):
>         # Exception when an instance exists
>         if __class__._instance:
>             raise Exception(
>                 f'Instance of class "{self.__class__.__name__}" still 
>exists!'
>                 f' Use "{self.__class__.__name__}.instance()" to access 
>it.')
>
>         # Remember the instance as the one and only singleton
>         __class__._instance = self

Das sind 22 Zeilen für was? Und da habe ich immer noch nicht das
Problem gelöst, dass ich das einzelne Objekt dieser Klasse immer noch
als globale Variable mitziehen muss oder jede einzele Funktion in
jedem einzelnen Aufruf dieses Objekt als Parameter braucht.

Oder stehe ich hier auf dem Schlauch?

Grüße
Marc
-- 
-------------------------------------- !! No courtesy copies, please !! -----
Marc Haber         |   " Questions are the         | Mailadresse im Header
Mannheim, Germany  |     Beginning of Wisdom "     | 
Nordisch by Nature | Lt. Worf, TNG "Rightful Heir" | Fon: *49 621 72739834

Back to de.comp.lang.python | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

Code Style Review Marc Haber <mh+usenetspam1118@zugschl.us> - 2022-11-28 16:19 +0100
  [Python-de] Re: Code Style Review c.buhtz@posteo.jp - 2022-11-28 15:37 +0000
    [Python-de] Re: Code Style Review Christopher Arndt <chris@chrisarndt.de> - 2022-11-28 16:48 +0100
      [Python-de] Re: Code Style Review c.buhtz@posteo.jp - 2022-11-28 19:53 +0000
      Re: [Python-de] Re: Code Style Review Marc Haber <mh+usenetspam1118@zugschl.us> - 2022-11-28 22:07 +0100
        [Python-de] Re: Code Style Review Stefan Schwarzer <sschwarzer@sschwarzer.net> - 2022-11-29 18:51 +0100
          [Python-de] Re: Code Style Review Marc Haber <mh+python-de@zugschlus.de> - 2022-11-29 21:44 +0100
            [Python-de] Re: Code Style Review Stefan Schwarzer <sschwarzer@sschwarzer.net> - 2022-11-29 23:16 +0100
    Re: [Python-de] Re: Code Style Review Marc Haber <mh+usenetspam1118@zugschl.us> - 2022-11-28 21:52 +0100
      [Python-de] Re: Code Style Review c.buhtz@posteo.jp - 2022-11-28 22:38 +0000
        Re: [Python-de] Re: Code Style Review Enrik Berkhan <Enrik.Berkhan@inka.de> - 2022-11-29 06:03 +0000
        Re: [Python-de] Re: Code Style Review Marc Haber <mh+usenetspam1118@zugschl.us> - 2022-11-29 15:22 +0100
          [Python-de] Re: Code Style Review c.buhtz@posteo.jp - 2022-11-29 14:39 +0000
      [Python-de] Re: Code Style Review Matthias Urlichs <matthias.urlichs@noris.de> - 2022-11-30 10:47 +0000
        [Python-de] Re: Code Style Review Marc Haber <mh+python-de@zugschlus.de> - 2022-12-01 21:30 +0100
          [Python-de] Re: Code Style Review Stefan Schwarzer <sschwarzer@sschwarzer.net> - 2022-12-02 00:07 +0100
            Re: [Python-de] Re: Code Style Review "Peter J. Holzer" <hjp-usenet3@hjp.at> - 2022-12-03 14:32 +0100
          [Python-de] Re: Code Style Review Matthias Urlichs <matthias.urlichs@noris.de> - 2022-12-02 09:29 +0000
            [Python-de] Re: Code Style Review Marc Haber <mh+python-de@zugschlus.de> - 2022-12-02 18:02 +0100
    [Python-de] Re: Code Style Review Stefan Schwarzer <sschwarzer@sschwarzer.net> - 2022-11-29 18:33 +0100
  [Python-de] Re: Code Style Review Stefan Schwarzer <sschwarzer@sschwarzer.net> - 2022-11-29 18:18 +0100
    [Python-de] Re: Code Style Review Hans-Peter Jansen <hpj@urpla.net> - 2022-11-30 15:52 +0100
    [Python-de] Re: Code Style Review Marc Haber <mh+python-de@zugschlus.de> - 2022-12-01 21:16 +0100
      [Python-de] Re: Code Style Review Stefan Schwarzer <sschwarzer@sschwarzer.net> - 2022-12-01 23:58 +0100
        [Python-de] Re: Code Style Review Marc Haber <mh+python-de@zugschlus.de> - 2022-12-02 18:10 +0100
          Re: [Python-de] Re: Code Style Review "Peter J. Holzer" <hjp-usenet3@hjp.at> - 2022-12-03 14:36 +0100

csiph-web