Anu*_*rma 5 python if-statement
我可以像这样检查python列表或字典是否为空
lis1, dict1 = [], {}
# similar thing can be done for dict1
if lis1:
# Do stuff
else:
print "List is empty"
Run Code Online (Sandbox Code Playgroud)
如果我尝试对我的类对象执行此操作,即通过键入if my_object:
此始终评估为来检查我的对象属性是否为非空True
>>> class my_class(object):
... def __init__(self):
... self.lis1 = []
... self.dict1 = {}
...
>>> obj1 = my_class()
>>> obj1
<__main__.my_class object at 0x10c793250>
>>> if obj1:
... print "yes"
...
yes
Run Code Online (Sandbox Code Playgroud)
我可以专门编写一个函数来检查我的对象属性是否为非空,然后调用if obj1.is_attributes_empty():
,但我更想知道如何if
评估standard data-types
likelist
和dict
toTrue
或False
取决于它们包含或为空的项目。
如果我想用我的类对象实现这个功能,我需要覆盖或更改哪些方法?
您需要实现该__nonzero__
方法(或__bool__
用于 Python3)
https://docs.python.org/2/reference/datamodel.html#object。非零
class my_class(object):
def __init__(self):
self.lis1 = []
self.dict1 = {}
def __nonzero__(self):
return bool(self.lis1 or self.dict1)
obj = my_class()
if obj:
print "Available"
else:
print "Not available"
Run Code Online (Sandbox Code Playgroud)
Python 还会检查该__len__
方法的真实性,但这对您的示例似乎没有意义。
如果你有很多属性要检查,你可能更喜欢
return any((self.lis1, self.dict1, ...))
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7972 次 |
最近记录: |