/ / ktorý spôsob importu je lepší v pytóne a niektoré objasnenia na objektoch triedy - python, class, object, import

ktorý spôsob importu je lepší v pytóne a niektoré objasnenia na triednych objektoch - python, class, object, import

Mám súbor python s názvom Point2.py, ktorý má nasledujúci kód

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)

Teraz v tlmočníkovi som to urobil:

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

Ale ja som dostal chybu:

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

Súbor Point2.py má v ňom triedy Bod. Prečo nie som schopný priradiť to p1. Keď som sa pokúsil:

>>> from Point import *

>>> p1 = Point()

Funguje to

Premenoval som súbor na Point.py a potom som to urobil

>>> import Point
>>> p1 = Point

a to funguje, ale priradenie hodnôt nie je jednoduché.

Avšak,

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

funguje.

Moja otázka je, prečo sa správa inak, keď dovážam Point a keď som to urobil z Point import *. Ktorý spôsob importu je dobrý štýl?

A existuje nejaký význam pre triedu a názov súboru?

odpovede:

4 pre odpoveď č. 1

Odpoveď prečo:

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

nefunguje, je to preto, že ste priamo neimportovali triedy Point () Point() trieda, budete chcieť:

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

alebo

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

Robí from x import * dovoz všetko z modulu. Takže ak bola funkcia foo() v module bar, robí from bar import foo importovať funkciu, aby ste to mohli urobiť foo() a nemusíte robiť bar.foo(), To je dôvod, prečo ste to urobili from Point import *, fungovalo to tak, ako ste nemuseli robiť Point.Point().


Ktorý spôsob je lepšie importovať? No, robiť from x import * nie je odporúčané, ak nepoužijete všetko x, Môže sa tiež zmiešať s funkciami vo vašom skripte.

s from x import y alebo import x, pozri sa na túto otázku.