gpt4 book ai didi

python - OOP/try except 类的 __init__ 中的语句

转载 作者:行者123 更新时间:2023-12-01 08:58:59 27 4
gpt4 key购买 nike

我想控制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/except 部分工作 - try 没有执行 self.link = link,但是 except 语句没有执行.

一个例子:

test_link = Webpage('http://example.com')

可以与该类的 get_link()print 方法配合使用。

将不胜感激任何提示。

最佳答案

在您的情况下提出期望 ValueError 是在 try block 中完成的,而处理期望是在 except block 中完成的

了解更多信息请访问Raising Expections in python

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
else:
raise ValueError('Invalid link')
except ValueError as exp:
print("the value error is {}\nthe link specified is {} ".format(exp,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')

输出

the value error is Invalid link
the link specified is example.com

希望这有帮助

关于python - OOP/try except 类的 __init__ 中的语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52621192/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com