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