NokkunBlog

Keep technology simple.

【Python】import,from,asについて

 

こんにちは。のっくんです。

 

今日の記事では、よく目にするimport,from,asってよく見るけど実はよく分かっていないって方のために解説します。

 

[speech_bubble type=”ln” subtype=”L1″ icon=”ilust/cat2_4_think.png” name=”ネコ”]これってよく見るけど、何となくいつも使ってたんだよな〜。[/speech_bubble]

 

 

実行環境

・Python 3.7
・Pycharm

ディレクトリ構成

 

コードを書く前に、ディレクトリの構成を書いておきます。

 

Pycharmでexpというプロジェクトを作成しその下にmain.pyとhellomod.pyを作ります。

 

 

main.pyでhellomodをimportする方法を書いていきます。

 

import

 

インポートをするための簡単なクラス、HelloClassを作ります。このクラスは引数を出力するメソッドを持ちます。

 

hellomod.py

class HelloClass:
    def __init__(self):
        print("Hello Class init")

    def hello_method(self, val):
        print("Hello Method")
        print(val)

 

import文を使って呼び出してみます。import文には、インポートするファイル名(モジュール名)を指定します。hellomod.pyであれば”hellomod”になります。

 

main.py

import hellomod

ins1 = hellomod.HelloClass()
ins1.hello_method("call from ins1")

 

実行結果

Hello Class init
Hello Method
call from ins1

 

import, from

 

fromを使うとインスタンス化するときのモジュール名を省略できます。

 

main.py

from hellomod import HelloClass

ins2 = HelloClass()
ins2.hello_method("call from ins2")

 

実行結果

Hello Class init
Hello Method
call from ins2

 

as

 

下記の理由で別名でインポートしたい時に使います。

  • モジュール名が被っている
  • モジュール名が長すぎる
  • 分かりやすい名前でインポートしたい

 

main.py

from hellomod import HelloClass as Hello

ins3 = Hello()
ins3.hello_method("call from hello")

 

実行結果

Hello Class init
Hello Method
call from ins3

 

別の書き方

 

こんな書き方もできます。

 

hellomod.py

class ShortClass:
    def method(self, val):
        print(val)

 

main.py

import hellomod
hellomod.ShortClass().method("a")

from hellomod import ShortClass
ShortClass().method("aa")

from hellomod import ShortClass as sc
sc().method("aaa")

 

こっちの方が分かり易いかな。