IoT&HomeServer計画まとめ(2)

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)

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です