1 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 23:44:57 ] Pythonオフィシャルサイト www.python.org/ 日本Pythonユーザ会 www.python.jp/Zope/ まとめWiki python.rdy.jp/ 関連スレ find.2ch.net/?BBS=ALL&TYPE=TITLE&STR=python 前スレ pc11.2ch.net/test/read.cgi/tech/1226830195/
29 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 18:02:59 ] >>28 exec使わずに実行て? 普通、言語のインスペクトではメソッドの中身とか取れないのが普通。 JavaScriptはソースが見れたっけ? Pythonでの話に戻すけど、ソースコードをparserモジュールで構文木にして、 その構文木をソースとして実行とかできるのかな。やってみたことないけど。
30 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 18:10:04 ] rubyなら出来ますよ
31 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 18:12:40 ] そうだね、神の名はエホバだね。
32 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 19:02:45 ] はあ?
33 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 21:37:30 ] 今、下記のようなリストがあり、 list1 = ['cat', 'dog', 'spam', 'egg'] 下のマップで上記リストを変換したいと思います。 maps = {'animal': ['cat', 'dog']} 結果は以下を期待しています。 ['animal', 'animal', 'spam', 'egg'](あるいは、set(['animal', 'spam', 'egg']) その際、安直に上記を実装した、下のようなコードが思いつきました。 下のコードをmap関数やセット、lambda関数などなんでもいいので標準関数等を駆使して、とにかく短く表現できないか考えています。下記のコードはスマートな方でしょうか? ans = [] for elem in list1: for key, vals in maps.items(): if elem in vals: ans.append(key) else: ans.append(elem) print ans さらに、マップの要素が増えた場合、 maps = {'animal': ['cat', 'dog'],'food':['egg']} 他に、list1 = ['animal', 'spam', 'egg'] をもとにmaps = {'animal': ['cat', 'dog']}を用いて、元が復元できないか考えています。 >> ['cat','dog','spam', 'egg'] どなたかわかりますでしょうか?
34 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 21:39:01 ] 改行がくずれたので、、、 ans = [] for elem in list1: for key, vals in maps.items(): if elem in vals: ans.append(key) else: ans.append(elem) print ans
35 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 21:50:26 ] >>33 変換したい方向とmapsのデータの持ち方が逆なので意図がちょっと分かりにくかった list1 = ['cat', 'dog', 'spam', 'egg'] maps = {'animal': ['cat', 'dog']} reverse_maps = dict((x, key) for key, xs in maps.iteritems() for x in xs) print [ reverse_maps.get(x) or x for x in list1 ] こういうことでいいのかな?
36 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 22:08:25 ] >>35 やばい。目から鱗どころじゃないっす。。 マップをつくるなんて、、。 しかも、以前valuesだったものをkeyにして、、なんて思いも浮かばなかった。 ありがとうございます! しかし、実質1行とは。。予想以上でした。 これより最短はないですね。 ありがとうございます!
37 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 22:29:30 ] def foo(l, i, k): l[i] = k for k, v in maps.items(): for w in v: if list1.count(w): foo(list1, list1.index(w), k) print(list1) for k, v in maps.items(): for w in v: if list1.count(k): foo(list1, list1.index(k), w) print(list1) 初心者なので腕試しのつもりで書きました かなり行数使ってますが
38 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 22:30:11 ] >>35 コードもらいました これで逆変換 list1 = ["cat", "dog", "spam", "egg"] maps = {"animal": ["cat", "dog"]} transpose = lambda mps: dict((x, key) for key, xs in maps.iteritems() for x in xs) transform = lambda lst, mps: [item in mps.keys() and mps[item] or item for item in lst] itransform = lambda lst, mps: sum([item in mps.keys() and mps[item] or [item] for item in lst], []) #>>> import trans #>>> m = trans.transpose(trans.maps) ##>>> trans.transform(trans.list1, m) #['animal', 'animal', 'spam', 'egg'] #>>> s = set(trans.transform(trans.list1, m)) #>>> trans.itransform(trans.list1, trans.maps) #['cat', 'dog', 'spam', 'egg']
39 名前:37 mailto:sage [2009/01/03(土) 22:31:06 ] 一行で書けるのか 代入せずに新しくリストを作ればいいのか 勉強になるなあ
40 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 22:34:06 ] ああー 最後はtrans.list1じゃなくてs
41 名前:38 mailto:sage [2009/01/03(土) 22:38:56 ] transpose関数ももmapsではなくmpsですねサーセン
42 名前:37 mailto:sage [2009/01/03(土) 22:41:40 ] カウントとか効率悪そうだし foo関数定義した意味がわからないな 駄コード書いて反省してます すみませんでした
43 名前:37 mailto:sage [2009/01/03(土) 22:59:21 ] ちょっと増やすだけで破綻するし 駄目すぎるな
44 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 23:28:11 ] setでよかったのか 考えて損した 一から勉強し直そう
45 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 01:04:26 ] >>27 細かいとこだけど。それだと class b(a) の後に class a を定義しているので 偶然前に定義した class a が残っていただけで、意図したテストになっていないはず。 後、クラス名はなるべく頭に大文字を使おう。 hige, hoge はクラス変数になっているので、 fuga をインスタンス作らずに呼び出したいなら、@classmethod インスタンス変数にしたい場合コンストラクタ(__init__メソッド)内でhige,hogeを作る。
46 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 01:49:36 ] なんぞこれ
47 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 02:56:38 ] >>29 JavaScriptは実装依存じゃないかな。toSourceとかunevalがあったよーな気がする。 Pythonだとinspect.getsoruce >構文木をソースとして実行 構文木もコンパイルしたコードオブジェクトも実行可能。ただ、実行には結局exec/evalを使うので 構文木を弄るのでなければわざわざ変換する利点はない。see also compiler.ast, ast.parse 少し敷居は高いけど、Pythonはこの辺の標準モジュールは充実してる。 >>28 "exec を使わずに"がどういう意図なのかわからないけど、 単に字面通りなら、じゃあevalで?って話しだし。 副作用を気にしていて実行環境を分離したいのなら >>> d = {'a': 1} >>> exec "a = 10" in d >>> d['a'] 10 より確実にするなら、別プロセス立ち上げてsocketやpipe等で -> Rpyc等のライブラリを使う。 ところで、YAML内にPythonのソース書くって インデントがどっちの言語のものか混ざって解らなくなったりしない? (書いたことないけど
48 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 03:22:53 ] >>38 item in maps.keys() は、item in maps の方が推奨されてる。 でも、この場面なら get メソッドの第2引数を使う方がいい。 item in maps.keys() and maps[item] or item -> maps.get(item, item)
49 名前:38 mailto:sage [2009/01/04(日) 03:32:08 ] >>38 ありがとう 知りませんでした
50 名前:38 mailto:sage [2009/01/04(日) 03:33:58 ] ああー >>48 ですー
51 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 03:51:01 ] 効率無視 && mapsのkeysと各要素間に重複がない場合限定で。 mapsをtransposeせずに探索。見つかってもまだ探索・・・。 [reduce(lambda x,(y,z): y if x in z else x, maps.iteritems(), i) for i in list1]
52 名前:デフォルトの名無しさん [2009/01/04(日) 05:41:17 ] くだらないコードばっかだな
53 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 10:28:37 ] 掲示板作ったよ。 なんかホールとか発見したら教えてね。 しばらくしたら忘れてね。 rail.s4.pf-x.net/bbs/
54 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 11:54:39 ] 161さんごぶさたです
55 名前:デフォルトの名無しさん [2009/01/04(日) 13:01:07 ] a = ( {'a':'b'} ) for row in a: print row これだと、{'a','b'}でなく、'a'が表示されます。 a = ( {'a':'b'}, ) これだと、ちゃんと{'a':'b'}と表示されます。 これは何故でしょうか?
56 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 13:09:38 ] pythonでは1要素のタプルを記述するには (x,)のように末尾のカンマが要るんだよ >>> (1+2)*3 9 >>> (1+2,)*3 (3, 3, 3) 上の式のカッコがタプルだと思われても困るだろう?
57 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 13:18:48 ] なるほど ありがとうございました
58 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 14:21:36 ] a = ({'a':'b'})*3 print a a = ({'a':'b'},)*3 print a
59 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 15:38:05 ] >>5 for i in dict は、for i in dict.keys()と同じだから。
60 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 16:43:35 ] ┏━━━━━━━━━━━━━━━━━━━━━┓ ┃ ━ ╋━╋ ╋┓┏┓ ┳┻┳┏━ ┣━┳━ ┃ ┃ ━ ┏┳┓ ┃┃┗┛ ┻━┻┃ ┃ ┃ ┃ ┃ ━ ┗╋┛ ┏━┓ ┃ ┣┳ ┏━╋━ ┃ ┃ ━ ━╋━ ┣━┫ ━╋━┃┃ ┃ ┃ ┃ ┃┏┓━╋━ ┣━┫ ┏╋┓┃┃ ━┻━╋━ ┃ ┃┃┃ ┃ ┗━┛ ┃┃┃┃┃ ┃ ┃ ┃┗┛━┻━ ━┛┗━ ┃┃┃┃┃ ┃ ┃ ┗━━━━━━━━━━━━━━━━━━━━━┛ ∩ 〈〈〈 ヽ 〈⊃ } (\___/) | | ( ̄l▼  ̄)! ! / ● ● | / / l ___\lミ/ /▲ ( 。--。 ) /■___ (( ̄)) 新年あけましておめでとうございますーーっ! (___)  ̄/ 2009年 元旦
61 名前:デフォルトの名無しさん [2009/01/04(日) 17:06:59 ] >>59 嘘をかかないでください。for item in {'a':'b'}: は、'a':'b'を取り出した後自動的に'a'に加工してくれるんです
62 名前:デフォルトの名無しさん [2009/01/04(日) 19:39:07 ] pythonのソースコードをsjisで書いても問題ないでしょうか? 日本語はu"ほげ"で書くので、 他言語で発生するような文字化け問題は発生しないのではと思うのですが そのあたりどうでしょうか
63 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 19:43:58 ] 俺はいつもsjisで書いてるよ。
64 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 19:54:22 ] for item in dict と for item in dict.keys() が同じになるのは、正確には 3.0 から。 2.x では dict.keys()はキーのリストを作って返すので、同じになるのは dict.iterkeys()。 でも >>61 は解らない。バイトコードで?それともC関数内で? 自動的に加工してくれるという根拠とかどこにあるのか、よければ教えてください。
65 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 19:57:14 ] サブクラスがオヤクラスの名前を知るにはどうすればいいのでしょうか? class Tuple3: def __init__(self, arg): if isinstance(arg, Tuple3): print 'ok' else: print 'ng' class Vector3(Tuple3): def __init__(self, arg): Tuple3.__init__(self, arg) と、あったとき、 vec = Vector3() --> 'ng' vec2 = Vector3(vec) とやった時、'ok'と表示させる事はできますか? 親クラスコンストラクタで、isinstance(arg, Vector3)と直接書けばいいのはわかるのですが、 このやり方はしたくありません。 そんな事は可能ですか?
66 名前:デフォルトの名無しさん [2009/01/04(日) 20:01:21 ] 必要なくね?
67 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 20:10:57 ] >>62 自分ひとりで同一環境で書いてる間は特に問題ない。 ブラウザからsvnレポジトリ内のソースを読む時、等 他のいろんな所とのやりとりを想定すると ソース内には極力日本語を書かないようにするかutf-8に統一が無難。
68 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 20:31:54 ] >>65 どういう用途なのかわからないけど、使えそうなものをとりあえず列挙すると issubclass Vector3.__bases__
69 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 20:35:36 ] class Tuple3: def __init__(self, arg): if isinstance(arg, Tuple3): print 'ok' else: print 'ng' これは class Tuple3: def __init__(self, arg): if self.__class is Tuple3: print 'ok' else: print 'ng' がいいんだろう
70 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 20:58:24 ] main.py /hoge/ - __init__.py - test.py をmain.py内で、 import hoge した場合、test.pyはimportされないのですか?
71 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 21:05:05 ] 何に使うのかまだ解ってないけど、 やりたい事ってもしかして、コレ? class Tuple3: def __init__(self, arg=None): if isinstance(arg, self.__class__): print "ok" else: print "ng"
72 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 21:06:47 ] >>70 パッケージは、__init__.py内で明示的にimportしない限り、 import hogeでimportされるのは hoge/__init__.pyのみ。
73 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 23:21:00 ] import hoge.test
74 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 23:44:04 ] 馬鹿ばっかり、ってことが証明されたなあ、このスレ。
75 名前:デフォルトの名無しさん [2009/01/04(日) 23:59:00 ] 馬鹿ばっかり、ってことが証明されたなあ、このスレ。
76 名前:デフォルトの名無しさん mailto:http://rail.s4.pf-x.net/bbs/ [2009/01/05(月) 00:58:39 ] 真面目にやれ
77 名前:デフォルトの名無しさん [2009/01/05(月) 00:59:54 ] 姑息なことすんな
78 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 01:02:07 ] くだすれの方が盛り上がってるな
79 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 01:24:52 ] sageないし草いし死ねば良いのに
80 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 01:48:12 ] 2chで死ねは挨拶みたいなもんだ罠
81 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 02:32:13 ] [ANN] PyYAML Python 3 対応 ---- yaml_make.py ---- import os, sys, yaml def make(target): makefile = os.path.join(os.getcwd(),'Makefile.yaml') exec (yaml.load(open(makefile))) in vars() if __name__ == '__main__': make(sys.argv[1]) ---- Makefile.yaml ---- hello: | print "Hello" test: | print "Test" PythonソースをYAML内に書くときのサンプル。 | がないと、関数・クラス定義する時に : が YAMLでの辞書のキー定義と解釈される。
82 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 09:40:31 ] そういうのは公式言ってみるからどうでもいいよ
83 名前:デフォルトの名無しさん [2009/01/06(火) 04:37:22 ] 15-20% average speedup on pybench and pystone bugs.python.org/issue4753
84 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 10:39:49 ] numpyはsageに吸収されてしまうのだろうか
85 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 23:22:47 ] 年明け首吊り失敗して顔酷いことなってるよ俺。首にアザできて外でれねえw
86 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 23:44:14 ] このご時世たくさん人をやとっちゃった会社は大変だね。 この状況で独立するバカは中央線を止めないようにね。
87 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 12:30:28 ] ま、会社が潰れるのは虚業だったことの証明なんだろうけどね。 年末が一つの山だったみたいだな。 次は年度末の3月が山だと思うよ。
88 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 12:39:13 ] コネない人間には虚業自体できないから 景気も関係ないんじゃないの
89 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 14:29:34 ] 有名なpythonistaって誰?
90 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 15:16:19 ] guido
91 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 15:37:57 ] >>90 それ神様
92 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 15:49:59 ] Eric Steven Raymond Peter Norvig
93 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 15:58:46 ] Matz
94 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 16:00:20 ] Ruby
95 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 19:36:53 ] >>93 ,94 もしかして: David Mertz と Sam Ruby
96 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 19:57:01 ] Tim Barners Lee
97 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 22:19:20 ] Matz
98 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 22:32:14 ] Notz
99 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 13:05:18 ] 日本人では
100 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 13:47:21 ] 俺
101 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 00:03:14 ] Jim Huguninは、pythonistaだと思う。
102 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 00:42:45 ] >>99 Matz
103 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 03:15:28 ] 西尾さん以外ありえないだろ。
104 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 04:22:41 ] 以下、Python系本の著者の話題が続くとさ
105 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 07:10:06 ] Esoteric Language みたいな本を opython で出す必要は ないよね
106 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 10:10:01 ] 西尾さん以外ありえないだろ。
107 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 10:15:06 ] 西尾さん以外ありえないだろ。
108 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 10:52:58 ] ttp://www.nishiohirokazu.org/blog/2007/02/grinedit_6.html
109 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 13:09:39 ] 西尾さんって誰?
110 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 14:21:09 ] 西尾さん以外アッーー!!
111 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 14:28:34 ] 彼のためを思ってやってるのかも知れないけど 一般的にこういうのは迷惑なものなんだよ>javajaの人
112 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 16:25:56 ] >>108 吹いた
113 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 17:28:00 ] >>109 d.hatena.ne.jp/nishiohirokazu/20090109
114 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 19:11:31 ] 知らね。 Matzと梶山民人(ninixの作者)なら知ってる。
115 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 20:32:09 ] いや、まて思い出した。 どう書く.orgなら知ってるのでそれ作った人か。
116 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 00:02:16 ] どう書く.org って Python で作られてたの?
117 名前:デフォルトの名無しさん [2009/01/11(日) 00:21:57 ] Pythonとかやってるやつが売国奴だ
118 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 00:26:07 ] どうせWindowsやLinux上で動かすしぃ
119 名前:FreeBSD mailto:sage [2009/01/11(日) 00:27:56 ] たまには思い出してやって下さい
120 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 00:32:38 ] 超漢字使え
121 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 12:47:00 ] sageなんてもんがあるのか 検索しにくい Pythonはじまったな
122 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 20:01:50 ] クラスのimport方法が分からん・・・ 今同じディレクトリに以下のPythonファイルがあるんですが、 いざ「driver.py」を実行しようとすると Traceback (most recent call last): File "hoge.py", line 5, in <module> obj = Hoge() TypeError: 'module' object is not callable ってエラーが出る。 import自体はうまく出来てるみたいなんだけど、インスタンスを作るところでエラーになってるのか・・・? 誰かPythonで自作クラスを作成&importするヒントをくださいorz 【Hoge.py】 1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 4 class Hoge: 5 def __init__( self ): 6 print("HOGE") 7 【driver.py】 1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 import Hoge 4 5 obj = Hoge()
123 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 20:04:06 ] >>122 【driver.py】 5 obj =Hoge.Hoge()
124 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 20:07:41 ] >>122 3 from Hoge import Hoge または 3 from Hoge import * 後者はおすすめしない
125 名前:122 mailto:sage [2009/01/11(日) 20:12:48 ] >>123 >>124 動いたあああああああああああああああああああああ ありがとう!! でも・・・これはどういうことなの・・・? HogeというパッケージにHogeクラスが属しているなら分かるんだけど、パッケージは作成せずに 同じディレクトリに二つのファイルを置いているだけなんだけど・・・ このあたりの動きってJavaとかPHPとはまったく別物?
126 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 20:37:21 ] >>125 Pythonにとって、パッケージ=ディレクトリ、モジュール=ファイルなの。 Hoge.py という名前のファイルなら、 Hoge というモジュールの中に、 Hoge という クラスができてた。
127 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 20:45:17 ] >>126 何その糞言語・・・やっぱrubyに変えようかな
128 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 20:47:16 ] >>126 丁寧にありがとう! なるほどそういうことか・・・ Python慣れるまで大変そうだけど、慣れればかなり便利に使えそうな気がするぜ!
129 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 20:56:37 ] パッケージでも ./Hoge/__init__.py に class Fuga 書くと from Hoge import Fuga になるし ./Hoge/Hage.py に class Fuga 書くと from Hoge.Hage import Fuga になる