self._coefficients = {}
for symbol, coefficient in coefficients:
if isinstance(symbol, Symbol):
- symbol = str(symbol)
+ symbol = symbol.name
elif not isinstance(symbol, str):
raise TypeError('symbols must be strings or Symbol instances')
if isinstance(coefficient, Constant):
yield self.coefficient(symbol)
yield self.constant
- @property
- def symbol(self):
- raise ValueError('not a symbol: {}'.format(self))
-
def issymbol(self):
return False
def __new__(cls, name):
if isinstance(name, Symbol):
- name = name.symbol
+ name = name.name
elif not isinstance(name, str):
raise TypeError('name must be a string or a Symbol instance')
self = object().__new__(cls)
self._coefficients = {name: 1}
self._constant = 0
self._symbols = tuple(name)
- self._symbol = name
+ self._name = name
self._dimension = 1
return self
@property
- def symbol(self):
- return self._symbol
+ def name(self):
+ return self._name
def issymbol(self):
return True
def __repr__(self):
- return '{}({!r})'.format(self.__class__.__name__, self._symbol)
+ return '{}({!r})'.format(self.__class__.__name__, self._name)
def symbols(names):
if isinstance(names, str):
def test_values(self):
self.assertCountEqual(self.expr.values(), [1, -2, 3])
- def test_symbol(self):
- self.assertEqual(self.x.symbol, 'x')
- with self.assertRaises(ValueError):
- self.pi.symbol
- with self.assertRaises(ValueError):
- self.expr.symbol
-
def test_issymbol(self):
self.assertTrue(self.x.issymbol())
self.assertFalse(self.pi.issymbol())
self.x = Symbol('x')
self.y = Symbol('y')
+ def test_name(self):
+ self.assertEqual(self.x.name, 'x')
+
def test_symbols(self):
self.assertListEqual(list(symbols('x y')), [self.x, self.y])
self.assertListEqual(list(symbols('x,y')), [self.x, self.y])