Я создаю Настой сайт и я хочу, чтобы отобразить различные ссылки выхода из системы на основе текущей страницы т.е.Decorator Design Pattern в Python
- Если мы на домашней странице и входа в систему, имеют ссылку завернуть в h2 тегах
- Если мы на другой странице и входа в систему, имеют ссылку завернуть в подчеркиваний теги
- Если вы вошли в систему, просмотреть ссылку, завернутые в сильных тегах
So у меня есть три до этого.
class HtmlLinks():
html =""
def set_html(self, html):
self.html = html
def get_html(self):
return self.html
def render(self):
print(self.html)
class LogoutLink(HtmlLinks):
def __init__(self):
self.html = "Logout"
class LogoutLinkH2Decorator(HtmlLinks):
def __init__(self, logout_link):
self.logout_link = logout_link
self.set_html("<h2> {0} </h2>").format(self.logout_link.get_html())
def call(self, name, args):
self.logout_link.name(args[0])
class LogoutLinkUnderlineDecorator(HtmlLinks):
def __init__(self, logout_link):
self.logout_link = logout_link
self.set_html("<u> {0} </u>").format(self.logout_link.get_html())
def call(self, name, args):
self.logout_link.name(args[0])
class LogoutLinkStrongDecorator(HtmlLinks):
def __init__(self, logout_link):
self.logout_link = logout_link
self.set_html("<strong> {0} </strong>").format(self.logout_link.get_html())
def call(self, name, args):
self.logout_link.name(args[0])
logout_link = LogoutLink()
is_logged_in = 0
in_home_page = 0
if is_logged_in:
logout_link = LogoutLinkStrongDecorator(logout_link)
if in_home_page:
logout_link = LogoutLinkH2Decorator(logout_link)
else:
logout_link = LogoutLinkUnderlineDecorator(logout_link)
logout_link.render()
Я получаю ошибку Атрибут
AttributeError: 'NoneType' object has no attribute 'format'
Что плохого я делаю и как это исправить. Пожалуйста помоги.
Похоже, вы ждете 'set_html 'иметь возвращаемое значение (отличное от' None')? Или, может быть, закрытие) слишком далеко влево. –
Кроме того, вы не уверены в своем фоне, но у вас есть html как атрибут _class_. вы хотите, чтобы он был атрибутом _object_. для этого просто закомментируйте строку, которая говорит 'html =" "' .. –
Спасибо @CorleyBrigman – ajkumar25