私はこのように見える12個のクラスがあり、唯一の違いは、DefaultAsset
グローバルオブジェクトです。私は、彼らが大きく、私はそうすることが静的であることを意図している何かの複数のインスタンスにつながる疑いので、私はそれら各クラスの一部にしていなかったなどDefaultAssetsOrderedDict
、NewAssetsOrderedDict
、OldAssetsOrderedDict
、として、これらのグローバルDefaultAssetOrderedDict
の12を持っていますだからはどのようにクラスの継承と引数を渡すことができますか?
class DefaultAsset(object):
__slots__ = list(DefaultAssetOrderedDict.keys())
def __init__(self, **kwargs):
for arg, default in DefaultAssetOrderedDict.items():
setattr(self, arg, re.sub(r'[^\x00-\x7F]', '', kwargs.get(arg, default)))
#print (str(arg) + " : "+ str(re.sub(r'[^\x00-\x7F]', '', kwargs.get(arg, default))))
def items(self):
for slot in self.__slots__:
yield slot, getattr(self, slot)
def values(self):
for slot in self.__slots__:
yield getattr(self, slot)
私が間違っている場合には(私はそれを修正するには、クラスのデータ行にOrderDictデータ行からの切り替え、メモリの問題の多くを持っていた)私を修正して、私は再することができます方法を知りたいです上記のクラスを作成してRows
という親クラスにして、私は次のようにすることができます:
または多分:
DefaultAssets = Rows(DefaultAssetOrderedDict)
NewAssets = Rows(NewAssetOrderedDict)
効果的に、私はちょうど実現し、私はスロットを使用することによって、より良いメモリの使用率とOrderedDictを実装しようとしている、私は私が制限さだと思いますクラスにオブジェクトを追加します(私はそれらをすべて事前に定義することができるので、私は必要ありません)。 OrderDictのオーバーヘッドが効果的に私はRAMの速度をトレードオフだ、それクラスの内部でその機能を模倣するグローバル変数することによって除去されています...これは理にかなっていますか?私は狂人、天才、または両方、笑ですか? – gunslingor