這是你在找什麼?
# Generic class definition
class Generic (object):
value = None
@classmethod
def val(cls):
return int(cls.value)
# Top level class
TopLevelClass = type('TopLevelClass',
(Generic,), {})
lines = ["A B C 42",
"A B D 43"]
for line in lines:
# Parse the line
path = line.split()[:-1]
value = line.split()[-1]
# Create the classes
current = TopLevelClass
for x in path:
if hasattr(current,x):
current = getattr(current,x)
else:
cls = type(x, (Generic,), {})
setattr(current,x,cls)
current = cls
# Apply value
setattr(cls,'value',value)
# Test
print(TopLevelClass.A.B.C.val())
print(TopLevelClass.A.B.D.val())
輸出:
>>> 42
>>> 43
我真的有一個很難理解什麼這裏的最後一段與你寫剩下的東西做的。你認爲你可以做一個更具體的例子嗎? – mgilson
第一部分是我想要做的,然後我想了一下,然後問了一些能讓我想要嘗試的東西。我保留第一部分只是爲了看看是否有人認爲這只是愚蠢的,或在 – CosminO