2016-04-23 13 views
1

私はmy_class.pyと呼ばれるファイルに次のClasssesを作成して定義されていません私は:は、クラス

それは動作します...私はそのファイル内のすべてのクラス(モジュール)をインポートすることができます方法があります"from X import Y"ステートメントを使用せずに再使用しますか?

+0

'from my_class import * ' – EbraHim

+0

ワイルドカードのインポートはお勧めできません。 'my_class.MyClassA' – zondo

+2

' from my_class import * 'しかし、Pythonスタイルガイドは、インライン構文で必要なオブジェクトをすべて明示的にインポートすることを提案しています:' from my_class import MyClassA、MyClassB' – tuned

答えて

1

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も役に立ちます。

+0

最初の行を 'import my_class'に変更することができます。 – EbraHim

+0

おっと、私は明らかに頭を使っていました。今それは正しい – rikisa

+0

私は言う: mcとしてインポートmy_class = mc.MyClassA() – hosselausso

1

MyClassAmy_classであることをPythonに伝える必要があります。

>>> import my_class 
>>> a = myclass.MyClassA() 
>>> 
+0

これは "from my_class import MyClassA"を行うよりもお勧めですか? – hosselausso

+0

これは名前の衝突を防ぎます。 – letmutx

1

あなたがMyClassAを参照したとき、Pythonは現在のファイルの外で定義したとおりにそれを認識しません。見た目をどこに示すかは、それが定義されたファイル名を使用して参照する必要があります。a = my_class.MyClassA()my_class.exampleを書き出す必要がない場合は、そのファイルから変数を参照するたびにimport my_class as mcを使用することができます。これにより、コードを短縮してa = mc.MyClassA()を使用できるようになります。これは汎用変数(from example import *)の好ましい解決策です。変数がどこから来ているかを明確に示し、読みやすくし、モジュール間の競合を回避します。