如何使用Python检查实例中的值?

时间:2010-10-20 16:54:22

标签: python member

我有一个python类/对象如下。

class Hello:
    def __init__(self):
        self.x = None
        self.y = None
        self.z = None


h = Hello()
h.x = 10
h.y = 20
# h.z is not set

我需要检查是否设置了所有成员变量(不是None)。我怎么能自动完成?

for value in ??memeber variables in h??:
    if value == None:
        print 'value is not set'

2 个答案:

答案 0 :(得分:3)

class Hello(object):
    def __init__(self):
        self.x = None
        self.y = None
        self.z = None
    def is_all_set(self):
        return all(getattr(self, attr) is not None for attr in self.__dict__)
但是,正如@delnan所说,你应该更喜欢让类永远不能处于有效状态(这被称为保留“类不变量”)

答案 1 :(得分:0)

  

我需要检查是否设置了所有成员变量(不是None)。

为什么呢?

您需要成员变量才能在课程中进行一些处理。

class Hello:
    def __init__(self):
        self.x = None
        self.y = None
        self.z = None
    def some_processing( self ):
        assert all( self.x is not None, self.y is not None, self.z is not None )
        # Now do the processing.