嗨,我想知道最佳实践是在python中初始化类,同时确保我的属性具有正确的数据类型。
我应该使用默认值初始化类属性还是调用检查函数?
class Foo:
# Call with default value
def __init__(self, bar=""):
self._bar = bar
# Calling set-function
def __init__(self, bar):
self._bar = ""
self.set_bar(bar)
def get_bar(self):
return self._bar
def set_bar(self, bar):
if not isinstance(bar, str):
raise TypeError("bar must be string")
self._bar = bar
def del_bar(self):
self._bar = ""
bar = property(get_bar, set_bar, del_bar, 'bar')
答案 0 :(得分:0)
您可以尝试以下代码段:
class Foo:
def __init__(self, bar=''):
self.bar = bar
@property
def bar(self):
return self._bar
@bar.setter
def bar(self, bar):
if isinstance(bar, str):
self._bar = bar
else:
raise TypeError('<bar> has to be of type string')
f = Foo('5') # works fine
g = Foo(5) # raises type error
即使在类实例化时未提供任何参数,也将进行检查。因此,即使您提供整数作为默认参数,也会触发异常。