나는 12 개의 클래스가 있는데, 유일한 차이점은 DefaultAsset
글로벌 객체이다. 나는 DefaultAssetOrderedDict
과 같이 DefaultAssetsOrderedDict
, NewAssetsOrderedDict
, OldAssetsOrderedDict
등 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