37,719
社区成员
发帖
与我相关
我的任务
分享
html = BeautifulSoup(login_html,"html.parser")
sechash = html.find(attrs={'name':'sechash'})['value']
In [204]: class NoneProofed(object):
...: def __init__(self, value):
...: self.value = value
...: def __getattr__(self, name):
...: if self.value is None:
...: return self
...: else:
...: return lambda *args, **kwargs: NoneProofed(getattr(self.value, name)(*args, **kwargs))
...: def __call__(self, *args, **kwargs):
...: return self
In [205]: class A:
...: def get_name(self, i):
...: if i < 5:
...: return None
...: return "myname"
In [206]: def test(i):
...: # wrap the object in NoneProofed
...: a = NoneProofed(A())
...: # make calls that might explode.
...: # We are "none proofed", fear not.
...: name = a.get_name(i)
...: upper_name = name.upper()
...: # finally, get the real value or None
...: return upper_name.value
...:
In [207]: test(6)
Out[207]: 'MYNAME'
In [208]: test(3)
In [209]: test(3) is None
Out[209]: True