X-Git-Url: https://svn.cri.ensmp.fr/git/linpy.git/blobdiff_plain/7fda4e3865bb7cc9b6ee15cfd3c62c207f585ec7..a4a564b4061ca0a495f2f2dba784d28b685b6f1d:/linpy/linexprs.py diff --git a/linpy/linexprs.py b/linpy/linexprs.py index b5864e1..d62c671 100644 --- a/linpy/linexprs.py +++ b/linpy/linexprs.py @@ -331,7 +331,7 @@ class LinExpr: return left / right raise SyntaxError('invalid syntax') - _RE_NUM_VAR = re.compile(r'(\d+|\))\s*([^\W\d_]\w*|\()') + _RE_NUM_VAR = re.compile(r'(\d+|\))\s*([^\W\d]\w*|\()') @classmethod def fromstring(cls, string): @@ -463,12 +463,15 @@ class Symbol(LinExpr): raise SyntaxError('invalid syntax') self = object().__new__(cls) self._name = name - self._coefficients = {self: Fraction(1)} self._constant = Fraction(0) self._symbols = (self,) self._dimension = 1 return self + @property + def _coefficients(self): + return {self: Fraction(1)} + @property def name(self): """ @@ -553,15 +556,8 @@ class Dummy(Symbol): """ if name is None: name = 'Dummy_{}'.format(Dummy._count) - elif not isinstance(name, str): - raise TypeError('name must be a string') - self = object().__new__(cls) + self = super().__new__(cls, name) self._index = Dummy._count - self._name = name.strip() - self._coefficients = {self: Fraction(1)} - self._constant = Fraction(0) - self._symbols = (self,) - self._dimension = 1 Dummy._count += 1 return self