עוץליגוץלי
New member
"מבנים" בפיתון struct-like python
(השאלה נשאלה שלשום גם בwhatsup, ללא תשובה בשלב זה):
בפיתון, אני מנסה לכתוב אוביקט שהגישה אליו תהיה כך:
page[2].records[7].color = "ffff"
כמו כן, אני מנסה ליצור מצב בו למשתנה הזה יש toString וגם fromString (או כל דרך נוחה אחרת ליצור serialize שלו לjson).
הקוד שלי יצא מאד מסורבל (מה לעשות, פיתון לא שפת אמי). האם יש דרך יותר "נכונה" ליצור את זה?
class record ():
'''
'''
def __init__(self, title, color, action, data) :
self.title = title
self.color = color
self.action = action
self.data = data
def toDict(self) :
ans = {'title':self.title, 'color':self.color, 'action':self.action, 'data':self.data}
return ans
def toString(self):
return '%s' % self.toDict()
class records():
'''
'''
def __init__(self):
self.f_record = {}
def __getitem__(self, key):
if not(self.f_record.get(key,None)):
self.f_record[key] = record(None,None,None,None)
return self.f_record[key]
def __setitem__(self, key, value):
self.f_record[key] = value
def toDict(self):
ans = {}
for i in self.f_record:
ans = self.f_record.toString()
return ans
def toString(self):
return '%s' % self.toDict()
class page():
'''
'''
def __init__(self):
self.records = records()
def toString(self):
return self.records.toString()
class papers():
'''
'''
def __init__(self):
self.f_papers = {}
def __getitem__(self,key):
if not (self.f_papers.get(key,None)):
self.f_papers[key] = page()
return self.f_papers[key]
def toString(self):
ans = {}
for i in self.f_papers:
ans = self.f_papers.toString()
return '%s' % ans
#tests
a = papers()
a[1].records[1] = record('group','red','open', 'group1')
a[1].records[2] = record('group','green','open', 'group2')
a[2].records[7].title = "ffff"
print a[1].records[1].toString()
print a.toString()
(השאלה נשאלה שלשום גם בwhatsup, ללא תשובה בשלב זה):
בפיתון, אני מנסה לכתוב אוביקט שהגישה אליו תהיה כך:
page[2].records[7].color = "ffff"
כמו כן, אני מנסה ליצור מצב בו למשתנה הזה יש toString וגם fromString (או כל דרך נוחה אחרת ליצור serialize שלו לjson).
הקוד שלי יצא מאד מסורבל (מה לעשות, פיתון לא שפת אמי). האם יש דרך יותר "נכונה" ליצור את זה?
class record ():
'''
'''
def __init__(self, title, color, action, data) :
self.title = title
self.color = color
self.action = action
self.data = data
def toDict(self) :
ans = {'title':self.title, 'color':self.color, 'action':self.action, 'data':self.data}
return ans
def toString(self):
return '%s' % self.toDict()
class records():
'''
'''
def __init__(self):
self.f_record = {}
def __getitem__(self, key):
if not(self.f_record.get(key,None)):
self.f_record[key] = record(None,None,None,None)
return self.f_record[key]
def __setitem__(self, key, value):
self.f_record[key] = value
def toDict(self):
ans = {}
for i in self.f_record:
ans = self.f_record.toString()
return ans
def toString(self):
return '%s' % self.toDict()
class page():
'''
'''
def __init__(self):
self.records = records()
def toString(self):
return self.records.toString()
class papers():
'''
'''
def __init__(self):
self.f_papers = {}
def __getitem__(self,key):
if not (self.f_papers.get(key,None)):
self.f_papers[key] = page()
return self.f_papers[key]
def toString(self):
ans = {}
for i in self.f_papers:
ans = self.f_papers.toString()
return '%s' % ans
#tests
a = papers()
a[1].records[1] = record('group','red','open', 'group1')
a[1].records[2] = record('group','green','open', 'group2')
a[2].records[7].title = "ffff"
print a[1].records[1].toString()
print a.toString()