number.py 657 B

1234567891011121314151617181920212223
  1. class Number:
  2. def __init__(self, value):
  3. self.value = self.to_number(value)
  4. def to_number(self, value):
  5. if isinstance(value, bool):
  6. return 1 if value else 0
  7. elif value is None:
  8. return 0
  9. elif isinstance(value, (int, float)):
  10. return float(value)
  11. elif isinstance(value, str):
  12. try:
  13. return float(value)
  14. except ValueError:
  15. return float('nan')
  16. elif isinstance(value, (list, dict)):
  17. return float('nan')
  18. else:
  19. return float('nan')
  20. def __str__(self):
  21. return str(self.value)