Я хочу контролировать ввод класса Webpage
.Это означает, что я хочу быть уверен, что ссылка на веб-страницу предоставлена надлежащим образом, например, 'http://example.com'
.
class Webpage(object):
def __init__(self, link):
prefix = ['http', 'https']
suffix = ['com', 'net']
try:
if link.split(':')[0] in prefix and link.split('.')[-1] in suffix:
self.link = link
except:
raise ValueError('Invalid link')
def get_link(self):
'''
Used to safely access self.link outside of the class
Returns: self.link
'''
return self.link
def __str__(self):
return str(self.link)
Однако, когда я пытаюсь ввести код:
test_link = Webpage('example.com')
, я не получаю ValueError
, как я ожидал.Вызов методов:
test_link.get_link()
print(test_lint)
приводит к
AttributeError: 'Webpage' object has no attribute 'link'
, что указывает на то, что попытка / исключение сработала частично - try
не выполнил self.link = link
, однако оператор except
не был 't выполнено.
Пример:
test_link = Webpage('http://example.com')
отлично работает с get_link()
и print
методами этого класса.
Буду признателен за любую подсказку.