我对python中的类实例化有一个问题。所以我有一堆不同类型的数据存储在同一个目录中,我只想使用仅适用于该类型的 python 类来处理其中的一种类型。不幸的是,数据的类型只有在通过类读入时才知道。所以我想知道是否有一种方法可以__init__()
在数据类型不正确的情况下简单地停止类实例化,并在读取所有数据时简单地传递给下一个数据集?还是在类实例化时进行验证是个坏主意?
非常感谢!
我对python中的类实例化有一个问题。所以我有一堆不同类型的数据存储在同一个目录中,我只想使用仅适用于该类型的 python 类来处理其中的一种类型。不幸的是,数据的类型只有在通过类读入时才知道。所以我想知道是否有一种方法可以__init__()
在数据类型不正确的情况下简单地停止类实例化,并在读取所有数据时简单地传递给下一个数据集?还是在类实例化时进行验证是个坏主意?
非常感谢!
您可以执行以下操作:
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
正确的做法是,如果提供给类的数据类型错误,则引发错误:
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.