プロパティとしての擬似指示
-
01-10-2019 - |
質問
Pythonクラスがあります C
2つの疑似が必要です -dict
s a
と b
. 。擬似命令という用語は、辞書が実際に存在せず、キーにアクセスするたびに「再計算」されることを意味します。
Pseudocodeでは、これは次のようになります。
class C:
def a.__getitem__(self, key):
return 'a'
def b.__getitem__(self, key):
return 'b'
>>> c = C()
>>> c.a['foo']
'a'
>>> c.b['bar']
'b'
クラスを実装できます a
と b
, 、しかし、どちらもいくつかの短い方法を持っているので、これを行うためのよりエレガントでコンパクトな方法があるのだろうかと思います。
解決
なぜあなた自身のクラスを定義しないのですか?
class PseudoDict(object):
def __init__(self, c):
self.c = c
def __getitem__(self, key):
return self.c.somethingmagical()
class C(object):
def __init__(self):
self.a = PseudoDict(self)
self.b = PseudoDict(self)
c = C()
print c.a['foo']
print c.b['bar']
これらの「擬似指示」の値がどこから来ているのかわからないので、更新する必要があります __getitem__
方法。
他のヒント
このような?
from collections import defaultdict
class C:
a = defaultdict(lambda:'a')
b = defaultdict(lambda:'b')
c=C()
print c.a['foo']
print c.b['bar']
それとも、実際の計算関数のためにこのようになりますか?
from collections import defaultdict
class C:
def __init__(self):
self.a = defaultdict(self.geta)
self.b = defaultdict(self.getb)
def geta(self):
return 'a'
def getb(self):
return 'b'
c=C()
print c.a['foo']
print c.b['bar']
所属していません StackOverflow