私はmy_class.pyと呼ばれるファイルに次のClasssesを作成して定義されていません私は:は、クラス
それは動作します...私はそのファイル内のすべてのクラス(モジュール)をインポートすることができます方法があります"from X import Y"ステートメントを使用せずに再使用しますか?
私はmy_class.pyと呼ばれるファイルに次のClasssesを作成して定義されていません私は:は、クラス
それは動作します...私はそのファイル内のすべてのクラス(モジュール)をインポートすることができます方法があります"from X import Y"ステートメントを使用せずに再使用しますか?
my_classは、インポートするモジュールです。構文的には、my_class.pyで定義されたクラス、変数などは、インポートされたモジュールの属性です。用途:
import my_class
ca = my_class.MyClassA()
またはあなたがmy_class頻繁にアクセスしたい場合は、インポートの識別子を変更することができます。
import my_class as mc
ca = mc.MyClassA()
これは、IIRC最もニシキヘビ方法です。さらにノートで:my_classを事前コンパイルしてインポートされ、両方の変異体において
import my_class
MyClassA = my_class.MyClassA
ca = MyClassA()
:
from my_class import MyClassA
ca = MyClassA()
基本的に同じです。 the docsも役に立ちます。
最初の行を 'import my_class'に変更することができます。 – EbraHim
おっと、私は明らかに頭を使っていました。今それは正しい – rikisa
私は言う: mcとしてインポートmy_class = mc.MyClassA() – hosselausso
MyClassA
がmy_class
であることをPythonに伝える必要があります。
>>> import my_class
>>> a = myclass.MyClassA()
>>>
これは "from my_class import MyClassA"を行うよりもお勧めですか? – hosselausso
これは名前の衝突を防ぎます。 – letmutx
あなたがMyClassAを参照したとき、Pythonは現在のファイルの外で定義したとおりにそれを認識しません。見た目をどこに示すかは、それが定義されたファイル名を使用して参照する必要があります。a = my_class.MyClassA()
。 my_class.example
を書き出す必要がない場合は、そのファイルから変数を参照するたびにimport my_class as mc
を使用することができます。これにより、コードを短縮してa = mc.MyClassA()
を使用できるようになります。これは汎用変数(from example import *
)の好ましい解決策です。変数がどこから来ているかを明確に示し、読みやすくし、モジュール間の競合を回避します。
'from my_class import * ' – EbraHim
ワイルドカードのインポートはお勧めできません。 'my_class.MyClassA' – zondo
' from my_class import * 'しかし、Pythonスタイルガイドは、インライン構文で必要なオブジェクトをすべて明示的にインポートすることを提案しています:' from my_class import MyClassA、MyClassB' – tuned