IoT&HomeServer計画まとめ(2)
2020-06-28 2020-07-02
Pythonのプログラムを公開するとき
そんなたいそうな話では無いのですが、、
今回は、
・Pythonのプログラムを公開する
・ユーザ固有の部分はプラグインの如く各自Pythonで作成していただく
みたいな感じなのですが、ベストな方法は何かを探っていました。
そこには、
中途半端な感じでソースを公開したくないから
というのもあります。
いや、これが大きいかも。
プログラムモジュールの構成
モジュールの構成に正解があるわけではありませんが、今回はこういう考え方です。
main.py
userclass.py
mainClass.pyd
subclass.pyd ※いくつかある
雑もの.pyd ※いくつかある
main.pyはとても簡単なpyファイルです。
ざっとこんな感じです。
from myClass import myClass
#--------------------------------------
if __name__ == '__main__':
C = myClass()
C.start()
userClass.pyはこんな感じですよ。
import time
#--------------------------------------
class userClass:
#------------------------------------------------------------------------------
# constructer
#------------------------------------------------------------------------------
def __init__(self):
self.SV = ""
#------------------------------------------------------------------------------
# before
#------------------------------------------------------------------------------
def __enter__(self):
#print("前処理")
return self
#------------------------------------------------------------------------------
# after
#------------------------------------------------------------------------------
def __exit__(self, exc_type, exc_value, traceback):
#print("後処理")
a = 0
#------------------------------------------------------------------------------
# deleted
#------------------------------------------------------------------------------
def __del__(self):
self.f = None
#------------------------------------------------------------------------------
# go ここを書き換えますよ!
#------------------------------------------------------------------------------
def go(self,o,dat):
print("obj:",o)
time.sleep(60)
#------------------------------------------------------------------------------
#----------------------------------
if __name__ == '__main__':
A = 0
基本的には、go関数をインプリメントしてもらえればそれでOKって形です。
引数のoとdatはともにObjectで、何がくるかの仕様が決まってるかんじですね。
どういう風に動作するかというと、
こんな感じですね。
あ、書いてから気づきました。
TCP Clientの部分もテンプレートに書いといちゃうべきでしたね^^;
つづく
つづきます。
引数のObjectの説明とかありますからね。(o^^o)