[英]How do I define an argument in a method only if it isn't defined in __init__()?
例如,我想创建一个可以在有或没有初始化变量的情况下做不同事情的类,但是我想保持它的灵活性,这样,如果在没有该参数的情况下创建该类,则可以在以后的方法中添加它。 我有:
class Kickass(object):
def __init__(self, website=None)
if website:
self.website = website
def kick_butt(self):
# Can do stuff even if website == None
return stuff
def web_scrape(self, site=None):
if site:
try:
self.website == None
except ValueError:
print('Class instance already has a website!')
# Do operations with method's argument
if not site:
if self.website == None:
raise ValueError('Neither method nor instance have defined a website!')
else:
# Do operations with instance's variable
我仍然对类和异常处理感到恐惧。 预先感谢您的输入。
除非该行为实际上是例外的,否则您不应期望。 在您的情况下,您似乎想检查一个案例,并根据此行为进行更改。 所以只要检查一下
if self.website is not None:
DoThisThing
else:
DoTheOtherThing
您的try / except无法正常运行的原因是try / except无法与if / else正常运行。
相反,try / except将首先尝试在try块中运行代码。 如果代码运行正常,则它会跳过,然后继续。 但是,如果代码抛出Exception
,它将运行一个捕获该特定异常的except块。
您的try块如下所示:
try:
self.website == None
现在,如果self.website为None,则try块中的代码将解析为True。 这也不例外,因此将不会执行except块。 如果self.website不为none,则此块将解析为False,这也不例外,因此except块将不会运行。
现在,如果您的try块如下所示:
try:
len(self.website)
尝试中的代码将引发TypeError: object of type 'NoneType' has no len()
所以如果你跟随
except TypeError:
print("This will run now")
您的except块将执行。
您可以使用try / except来处理代码引发的异常(通常是在运行时数据与预期的不同时)。 在正常操作情况下,使用if / else指定紧急情况。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.