/ / welche Art des Imports in Python besser ist und einige Klarstellungen zu den Klassenobjekten - Python, Klasse, Objekt, Import

Welche Art von Importieren ist in Python besser und einige Klarstellungen zu den Klassenobjekten - Python, Klasse, Objekt, Import

Ich habe eine Python-Datei namens Point2.py, die den folgenden Code enthält

class Point():
def __init__(self,x=0,y=0):
self.x = x
self.y = y
def __str__(self):
return "%d,%d" %(self.x,self.y)

Jetzt im Dolmetscher habe ich folgendes gemacht:

>>> import Point2
>>> p1 = Point()

Ich habe aber einen Fehler erhalten:

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: "module" object is not callable

Die Point2.py-Datei enthält die Point-Klasse. Warum ich es nicht p1 zuordnen kann. Als ich es versuchte:

>>> from Point import *

>>> p1 = Point()

Es klappt

Ich habe die Datei in Point.py umbenannt und es dann gemacht

>>> import Point
>>> p1 = Point

und das funktioniert, aber Werte zuweisen ist nicht einfach.

Jedoch,

>>> from Point import *
>>> p1 = Point(3,4)

funktioniert.

Meine Frage ist, warum es sich beim Import von Point und beim Import von Point * anders verhält. Welche Art des Importierens ist ein guter Stil?

Und gibt es Relevanz für die Klasse und den Dateinamen?

Antworten:

4 für die Antwort № 1

Um zu antworten warum:

>>> import Point2
>>> p1 = Point()

funktioniert nicht, weil Sie die Klasse Point () nicht direkt importiert haben Point() Klasse, die Sie machen wollen:

>>> import Point2
>>> p1 = Point2.Point()

Oder

>>> from Point2 import Point
>>> p1 = Point()

Tun from x import * Importe alles aus dem Modul. Also, wenn es eine Funktion gab foo() in einem Modul bar, tun from bar import foo würde die Funktion importieren, damit Sie es tun könnten foo() und muss nicht tun bar.foo(). Deshalb hast du es getan from Point import *, es hat funktioniert, wie Sie es nicht brauchen Point.Point().


Welcher Weg ist besser zu importieren? Gut zu tun from x import * Es wird nicht empfohlen, wenn Sie nicht alles in verwenden x. Es kann auch mit Funktionen in Ihrem eigenen Skript vermischt werden.

Mit from x import y oder import x, Schau mal bei dieser Frage.