考虑这段代码:
class Page(object):
def __init__(self, name, title):
self.name = name
self.title = title
self.selected = False
def select(self): <-- How can I make this method work?
for Page in Pages:
Page.selected = False
self.selected = True
class Website(object):
def __init__(self):
self.index = Page("index", "Home")
self.settings = Page("settings", "Settings")
self.users = Page("users", "Users")
self.logs = Page("logs", "Logs")
self.faq = Page("faq", "FAQ")
def __iter__(self):
return iter([self.index, self.settings, self.users, self.logs, self.faq])
Pages = Website()
我正在尝试做的事情似乎是非法的。不过,我确信有办法做到这一点。看来我可能不得不在某处重写get方法。非常感谢您的帮助!
这是我打算使用 Bottlepy 使用这些类的方式:
设置页面:
@route('/')
@route('/<selectedPage>')
@route('/<selectedPage>/')
def dynamic_routing(selectedPage='index'):
for Page in Pages:
if selectedPage == Page.name:
Page.select()
return template('default')
检索页面信息(在 Bottlepy 模板内):
%for Page in Pages:
%if Page.selected:
<title>{{Page.title}}</title>
%else:
<title>Page Not Found</title>
%end
%end
我现在将代码编辑为工作版本。谢谢大家这么快的输入!!!你们真棒!仍然可能不是最好的方法,但我现在想不出另一种方法来解决它。