【发布时间】:2016-03-03 06:08:12
【问题描述】:
我有一个具有多个属性的类,每个属性都必须是一个数字。在一遍又一遍地重复相同的代码之后,我认为有一种更 Pythonic 的方式可以将多个类实例属性声明为数字。
现在我将每个属性值设置为 None,如果值设置为非数字类型,则会引发类型错误。我更喜欢在属性初始化时将属性类型设置为数字。
谢谢!
例子:
import numbers
class classWithNumbers(object):
def __init__(self):
self._numProp1 = None
self._numProp2 = None
@property
def numProp1(self):
return self._numProp1
@numProp1.setter
def numProp1(self,value):
if not isinstance(value, numbers.Number): #repeated test for number
raise TypeError("Must be number")
self._numProp1 = value
@property
def numProp2(self):
return self._numProp2
@numProp2.setter
def numProp(self,value):
if not isinstance(value, numbers.Number):
raise TypeError("Must be number")
self._numProp2 = value
另外,我实际上已经将它封装到一个在每个属性设置器处重复的方法中:
def isNumber(value):
if not isinstance(value, numbers.Number):
raise TypeError("Must be number")
【问题讨论】:
标签: python types properties initialization