teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

コードに冗長な点があった為、ソース内コメントで説明(クラス内でインポートすれば import child1 as ch1 は不要だった)

2020/03/16 11:37

投稿

teamikl
teamikl

スコア8817

answer CHANGED
@@ -39,7 +39,7 @@
39
39
  class MainWindow(ttk.Frame):
40
40
 
41
41
  # 別ファイルで定義した関数を、インスタンスメソッドにする。
42
- create_notebook = ch1.create_notebook
42
+ create_notebook = ch1.create_notebook # ここで from child1 import create_notebook でも良い
43
43
  show_datalist = ch2.show_datalist
44
44
 
45
45
  def __init__(self, parent):

1

紹介した分割方法について、オブジェクト指向もしくはPythonでの一般的な分割方法だと誤解を招かれないように補足を追記

2020/03/16 11:37

投稿

teamikl
teamikl

スコア8817

answer CHANGED
@@ -66,4 +66,10 @@
66
66
 
67
67
  同じクラスのインスタンスメソッドとすることで、
68
68
  self を通じて別ファイルで定義した関数を、メソッドとして呼び出す事が出来ます。
69
- >メソッド呼び出し→selfを渡す関数呼び出し といった変更作業が不要になります。
69
+ >メソッド呼び出し→selfを渡す関数呼び出し といった変更作業が不要になります。
70
+
71
+ ----
72
+ 補足: 上記の分割方法について注意点
73
+ IDEやドキュメント生成ツールではメソッドと認識されない可能性があります。
74
+ あまり多用する分割方法ではなく、飽くまで「メソッドを関数にして (インスタンス)self を渡す」の代用です。
75
+ オブジェクト指向に於いては、役割毎に別クラスに分割するのが一般的です。