Frage

Ich habe für Masten auf einem sehr einfachen crud Generator arbeitet. Ich kam mit etwas, das

inspiziert
SomeClass._sa_class_manager.mapper.c

Ist es in Ordnung zu untersuchen diese (oder Methoden mit Strich begining zu nennen)? Ich immer irgendwie angenommen, dies obwohl verpönt ist legal, da sie stark auf die interne Struktur einer Klasse / Objekt beruht. Aber hey, da Python wirklich keine Schnittstellen im Java Sinne vielleicht ist es in Ordnung.

War es hilfreich?

Lösung

Es ist beabsichtigt (in Python), dass es keine "private" sind Bereiche. Es ist eine Konvention, dass alles, was mit einem Unterstrich beginnt nicht optimal verwendet werden, und daher kann man nicht, ob sein Verhalten oder Definition Änderungen in einer nächsten Version beschweren.

Andere Tipps

In der Regel bedeutet dies, in der Regel, dass das Verfahren effektiv intern ist, eher als Teil der dokumentierten Schnittstelle und nicht herangezogen werden sollte. Zukünftige Versionen der Bibliothek sind frei umbenennen oder solche Methoden zu entfernen, so dass, wenn Sie über die zukünftige Kompatibilität kümmern, ohne neu zu schreiben, vermeiden es zu tun.

Wenn es funktioniert, warum nicht? Sie könnten Probleme haben, obwohl, wenn _sa_class_manager umstrukturiert wird, sich auf diese spezielle Version von SQLAlchemy Bindung oder mehr Arbeit zu schaffen, die Änderungen zu verfolgen. Wie SQLAlchemy ein sich schnell bewegendes Ziel ist, kann man es schon in einem Jahr sein.

Der bevorzugte Weg wäre, um Ihre gewünschte API in SQLAlchemy selbst zu integrieren.

Es ist im Allgemeinen keine gute Idee, aus Gründen bereits erwähnt. Allerdings bewusst Python ermöglicht dieses Verhalten für den Fall gibt keinen anderen Weg gibt, etwas zu tun.

Zum Beispiel, wenn Sie eine Closed-Source kompilierte Python-Bibliothek, wo der Autor hätte nicht gedacht, Sie internen direkten Zugang zu einem bestimmten Objekt bräuchten Zustand, aber Sie wirklich tun-können Sie immer noch auf den Informationen, die Sie brauchen . Sie haben die gleichen Probleme erwähnt, bevor die mit verschiedenen Versionen zu halten (wenn Sie Glück haben, dass es immer noch aufrechterhalten wird), aber zumindest kann man eigentlich tun, was Sie tun wollten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top