对类实例化​​的验证

时间:2012-10-31 01:19:34

标签: python validation class

所有 我在python中有类实例化的问题。 所以我有一堆存储在同一目录中的不同类型的数据,我只想使用仅适合该类型的python类处理它们中的一种类型。不幸的是,只有在通过类读入数据时才知道数据的类型。 所以我想知道是否有一种方法可以简单地停止__init__()中的类实例化,如果数据类型不正确,只是在读取所有数据时只是传递给下一个数据集? 或者验证类实例化是一个坏主意?

非常感谢!

2 个答案:

答案 0 :(得分:0)

您可以执行以下操作:

class MyClass(object):
    def __init__(self,data):
        if type(data) is int:  #In this example we don't want an int, we want anything else
            pass
        else:
            #do stuff here

然后使用它:

MyClass('This is ok')

MyClass(92) #This is not ok

答案 1 :(得分:0)

如果输入到类的数据类型错误,正确的方法是引发错误

class MyClass(object):
    def __init__(self, data):
        if not isinstance(data, correct_type):
            raise TypeError("data argument must be of type X")

然后用try except子句包装你的实例化:

try:
    myInstance = MyClass(questionable_data)

except TypeError:
    #data is not the correct type. "pass" or handle in an alternative way. 

这是有利的,因为它使得数据需要明确显而易见的某种类型。

另一种选择是像sberry所说的那样做,并在试图实例化一个类之前显式测试数据类型

if isinstance(data, correct_type):
    myInstance = MyClass(data)
else:
    #data is not the correct type. "pass" or handle in an alternative way.