Selbst nach @Mickey Perlsteins Antwort und seiner 3-stündigen Detektivarbeit brauchte ich noch ein paar Minuten, um dies auf mein eigenes Durcheinander anzuwenden. Falls jemand wie ich ist und etwas mehr Hilfe benötigt, ist hier, was in meiner Situation vor sich ging.
- Antworten ist ein Modul
- Antwort ist eine Basisklasse innerhalb des Antwortmoduls
- GeoJsonResponse ist eine neue Klasse, die von Response abgeleitet ist
Anfängliche GeoJsonResponse-Klasse:
from pyexample.responses import Response
class GeoJsonResponse(Response):
def __init__(self, geo_json_data):
Sieht gut aus. Keine Probleme, bis Sie versuchen, das Ding zu debuggen. Dann erhalten Sie eine Reihe von scheinbar vagen Fehlermeldungen wie diese:
aus pyexample.responses importieren Sie GeoJsonResponse .. \ pyexample \ answers \ GeoJsonResponse.py: 12: in (Modul-) Klasse GeoJsonResponse (Antwort):
E TypeError: module () akzeptiert höchstens 2 Argumente (3 angegeben)
=================================== FEHLER ============== ======================
___________________ FEHLER beim Sammeln von Tests / test_geojson.py ____________________
test_geojson.py:2: in (Modul) aus pyexample.responses importieren GeoJsonResponse .. \ pyexample \ answers \ GeoJsonResponse.py: 12: in (Modul)
Klasse GeoJsonResponse (Antwort): E TypeError: module () akzeptiert höchstens 2 Argumente (3 angegeben)
FEHLER: nicht gefunden: \ PyExample \ tests \ test_geojson.py :: TestGeoJson :: test_api_response
C: \ Python37 \ lib \ site-packages \ aenum__init __. Py: 163
(Kein Name 'PyExample \ tests \ test_geojson.py :: TestGeoJson :: test_api_response' in einem von [])
Die Fehler haben ihr Bestes getan, um mich in die richtige Richtung zu weisen, und @Mickey Perlsteins Antwort war tot. Ich brauchte nur eine Minute, um alles in meinem eigenen Kontext zusammenzustellen:
Ich habe das Modul importiert :
from pyexample.responses import Response
wann ich die Klasse hätte importieren sollen :
from pyexample.responses.Response import Response
Hoffe das hilft jemandem. (Zu meiner Verteidigung ist es noch ziemlich früh.)