Seite 1 von 1

Warum sind viele Namen nicht PEP8 konform?

Verfasst: Sonntag 19. Juni 2011, 18:01
von mutetella
Hallo,

einfach mal interessehalber: Weiß jemand, weshalb viele Klassen- und Funktionsnamen innerhalb Pythonmodulen nicht PEP8 konform sind?

z. B.
datetime.datetime :: datetime.DateTime
collections.defaultdict :: collections.DefaultDict
collections.namedtuple :: collections.named_tuple

mutetella

Re: Warum sind viele Namen nicht PEP8 konform?

Verfasst: Sonntag 19. Juni 2011, 18:32
von Hyperion
mutetella hat geschrieben: einfach mal interessehalber: Weiß jemand, weshalb viele Klassen- und Funktionsnamen innerhalb Pythonmodulen nicht PEP8 konform sind?
Das dürfte an der historischen Entwicklung liegen. Ich weiß jetzt nicht, wie alt PEP8 wirklich ist; evtl. wurde das zu Beginn von Python noch nicht so strikt gesehen oder das ganze Proposal war noch nicht ausgereift?

In Python3 wurde da afair auch einiges aufgeräumt.

Bei Wrappern wie PyQt / PySide erlaubt PEP8 aber explizit Ausnahmen und die Orientierung am zugrunde liegenden Framework. (dort mixedCase() bei Methodennamen)

Re: Warum sind viele Namen nicht PEP8 konform?

Verfasst: Sonntag 19. Juni 2011, 20:04
von noisefloor
Hallo,

die PEP 8 gibt ja auch indirekt die Antwort. :-)

In der Einleitung steht, wann man mit den Konventionen brechen kann /darf. Unter "Naming Conventions" steht wörtlich "The naming conventions of Python's library are a bit of a mess, so we'll never get this completely consistent...".

ich denke auch, dass es so ist, wie Hyperion sagt - das Alter spielt eine Rolle. Bei ReportLab fällt mir das auch immer wieder aus. Da sind aber auch viele Module älteren Datums.

Gruß, noisefloor

Re: Warum sind viele Namen nicht PEP8 konform?

Verfasst: Montag 20. Juni 2011, 11:10
von Leonidas
mutetella hat geschrieben:collections.defaultdict :: collections.DefaultDict
collections.namedtuple :: collections.named_tuple
Diese beiden sind deutlich neuer als PEP8, also zählt die "historisch gewachsen"-Ausrede nicht. Ich nehme einfach an, dass man sich da an den eingebauten Typen "dict" und "tuple" orientiert hat, die ebenfalls in Kleinbuchstaben sind.