当酒店访客未添加有效的电子邮件地址时,我想引发TypeError,但我收到的却是此错误:
Traceback (most recent call last): File "/Users/Bex/PycharmProjects/Programmes/OOP/Hotel.py", line 43, in jane = Hotel.from_string("Jane,Doe,janedoe@gmail.com") File "/Users/Bex/PycharmProjects/Programmes/OOP/Hotel.py", line 15, in from_string return cls(first_name, last_name, email) File "/Users/Bex/PycharmProjects/Programmes/OOP/Hotel.py", line 25, in init raise TypeError("You've entered an invalid email address.") TypeError: You've entered an invalid email address.
class Hotel:
visitors = 0
rooms = ['single', 'double', 'queen', 'king', 'executive']
@classmethod
def display_no_of_visitors(cls):
if Hotel.visitors > 0:
return "There are currently {} visitor(s)".format(Hotel.visitors)
else:
return "There are no visitors currently at the hotel"
enter code here
@classmethod
def from_string(cls, str):
first_name, last_name, email = str.split(",")
return cls(first_name, last_name, email)
def __init__(self, first_name, last_name, email):
self.first_name = first_name
self.last_name = last_name
for char in email:
if char in "@":
self.email = email
else:
raise TypeError("You've entered an invalid email address.")
Hotel.visitors += 1
@property
def email(self):
return self.email
def __repr__(self):
return "Full Name: {} {}\n Email Address: {}".format(self.first_name, self.last_name, self.email)
def full_name(self):
return "{} {}".format(self.first_name, self.last_name)
def checkout(self):
Hotel.visitors -= 1
return "{} {} has checked out".format(self.first_name, self.last_name)
jane = Hotel.from_string("Jane,Doe,janedoe@gmail.com")
print(jane.first_name)
print(jane.last_name)`enter code here`
print(jane.display_no_of_visitors())
print(jane.email)
欢迎来到SO,Alex
在
__init__
中,它提升了TypeError
,因为它使用循环检查是否每个字符都是@
,并且因为不是每个字符都是,所以失败。相反,您可以放弃循环,然后像这样检查它:现在,这似乎没有错误。 您还需要删除一些额外的代码,以避免第11行和第46行出现语法错误
相关问题 更多 >
编程相关推荐