Pythonの関数とクラスのメモです。
関数を外部ファイルに分離したときに1時間くらい引っかかって詰んだんだね。
気が付くまでずいぶんかかってしまった。
そんなときのための念のためのまとめ。
外部に書いたファイルを以下のものとする
sumple.py
# -*- coding: utf-8 -*-
def func():
print "func!!"
str = "String!!"
|
sumple.pyを呼び出す処理は以下のようになる
パターン1
# -*- coding: utf-8 -*-
import sample
#sumple.pyの関数を呼び出す。
sample.func()
#sumple.pyの変数を呼び出す。
print sample.str
|
⇒実行結果
パターン2
# -*- coding: utf-8 -*-
from sample import func
#sumple.pyの関数を呼び出す。
func()
#sumple.pyの変数を呼び出す。
#これはできない!
#print str
|
⇒実行結果
ここまでのまとめ
外部のファイルを読み込むときは「 import ファイル名(.py)」を記述する。
fromを使うと呼び出しが「sample.func」から「func」に短縮できる。
ただし、直に書いている変数(ここではstr)が呼び出せない。
ここで疑問
呼び出し先のファイルが別のディレクトりにある場合は?
⇒「sys.path.append('パス')」を使って参照先のディレクトリを追加する
試してみよう「sample.py」を「./pylib」ディレクトリの中に移動して、
sample.pyを参照してみる。
# -*- coding: utf-8 -*-
import sys
sys.path.append('./pylib')
import sample
#sumple.pyの関数を呼び出す。
sample.func()
#sumple.pyの変数を呼び出す。
print sample.str
|
⇒実行結果
MEMO
もし上のディレクトリツリーの一つ上ならパスは「../」にする。
関数と変数を書いたものは読み込みが確認できたので次はクラス。
以下のクラスを書いたファイルを用意する
sample2.py
# -*- coding: utf-8 -*-
class Class:
# コンストラクタ
def __init__(self):
self.str = "string!!"
def func(self):
print "func!!"
def getstr(self):
return "get"+self.str
|
sample2のClassを読み込むには以下のようにする
パターン1
# -*- coding: utf-8 -*-
import sys
sys.path.append('./pylib')
import sample2
classins = sample2.Class()
#sumple.pyに書いたのクラスメンバメソッドを呼び出す。
classins.func()
#sumple.pyに書いたクラスメンバ変数を呼び出す。
print classins.str
#sample.pyに書いたクラスメンバメソッドを出してデータを取り出す。
print classins.getstr()
|
⇒実行結果
func!!
string!!
getstring!!
|
パターン2
# -*- coding: utf-8 -*-
import sys
sys.path.append('./pylib')
from sample2 import Class
classins = Class()
#sumple.pyに書いたのクラスメンバメソッドを呼び出す。
classins.func()
#sumple.pyに書いたクラスメンバ変数を呼び出す。
print classins.str
#sample.pyに書いたクラスメンバメソッドを出してデータを取り出す。
print classins.getstr()
|
⇒実行結果
func!!
string!!
getstring!!
|
クラスの読み込み、メソッドの使用ができました。
これで外部ファイルに書いた変数、クラス、関数を使用する手順が確認できました。
ご参考になれば。
0 件のコメント:
コメントを投稿