Python Forum
What is positional argument self?
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
What is positional argument self?
#10
Nice! Adding a units enumeration makes this a lot more flexible. To add a new unit all I need to do is add it to the enumeration and provide equations for converting to and from Celsius.
import enum

class Temperature:
    """I am a temperature.  You can specify my units.  I do unit conversion"""
    class Unit(enum.Enum):
        CELSIUS = "C"
        FAHRENHEIT = "F"
        KELVIN = "K"

    # Convert from unit to Celsius
    convert_from = {
        Unit.CELSIUS: lambda x: x,
        Unit.KELVIN: lambda x: x - 273.15,
        Unit.FAHRENHEIT: lambda x: (x - 32) * 5 / 9
    }

    # convert from Celsius to unit
    convert_to = {
        Unit.CELSIUS: lambda x: x,
        Unit.KELVIN: lambda x: x + 273.15,
        Unit.FAHRENHEIT: lambda x: (x * 9) / 5 + 32
    }

    def __init__(self, value=None, unit=Unit.CELSIUS):
        self.units = unit
        self.set(0 if value is None else value)

    def set(self, value, unit=None):
        """Set temperature value.  Can specify unit for value."""
        if unit is None:
            unit = self.units
        self.degreesC = self.convert_from[unit](value)
        return self.degreesC

    def set_units(self, units):
        """Change the default temperature units"""
        self.units = units

    def get(self, unit=None):
        """Get temperature value.  Can specify unit for value."""
        if unit is None:
            unit = self.units
        return self.convert_to[unit](self.degreesC)

    def __str__(self):
        """Get str for printing."""
        return f"{self.get()} °{self.units.value}"

temp = Temperature(273.15, Temperature.Unit.KELVIN)
print("Converting", temp)
for unit in Temperature.Unit:
    temp.set_units(unit)
    print(f"to {unit.name} {temp}")
Output:
Converting 273.15 °K to CELSIUS 0.0 °C to FAHRENHEIT 32.0 °F to KELVIN 273.15 °K
Reply


Messages In This Thread
What is positional argument self? - by Frankduc - Mar-04-2022, 02:09 PM
RE: What is positional argument self? - by Frankduc - Mar-04-2022, 04:40 PM
RE: What is positional argument self? - by Frankduc - Mar-04-2022, 04:47 PM
RE: What is positional argument self? - by Frankduc - Mar-04-2022, 05:05 PM
RE: What is positional argument self? - by ndc85430 - Mar-04-2022, 09:04 PM
RE: What is positional argument self? - by deanhystad - Mar-04-2022, 09:52 PM
RE: What is positional argument self? - by Frankduc - Mar-04-2022, 11:18 PM
RE: What is positional argument self? - by ndc85430 - Mar-05-2022, 07:26 AM
RE: What is positional argument self? - by Frankduc - Mar-05-2022, 08:27 PM
RE: What is positional argument self? - by Frankduc - Mar-05-2022, 10:50 PM
RE: What is positional argument self? - by ndc85430 - Mar-05-2022, 11:35 PM
RE: What is positional argument self? - by Frankduc - Mar-06-2022, 01:18 AM

Possibly Related Threads…
Thread Author Replies Views Last Post
  TypeError: Diagram.render() takes 1 positional argument but 2 were given sachin1361 0 1,352 Apr-23-2024, 06:39 AM
Last Post: sachin1361
  Error: _vhstack_dispatcher() takes 1 positional argument but 9 were given alexfrol86 3 7,976 May-09-2022, 12:49 PM
Last Post: deanhystad
  positional argument: 'self' mcmxl22 8 5,317 Dec-13-2021, 10:11 PM
Last Post: deanhystad
  TypeError: run_oracle_job() missing 1 required positional argument: 'connection_strin python_student 1 2,749 Aug-06-2021, 08:05 PM
Last Post: SheeppOSU
  TypeError: sum() missing 1 required positional argument: 'num2' Insen 3 7,311 Jan-06-2021, 04:25 PM
Last Post: Insen
  TypeError: forward() missing 1 required positional argument: 'x' sveto4ka 4 15,457 Jun-17-2020, 07:25 PM
Last Post: sveto4ka
  missing 1 required positional argument: 'self' yasser 7 16,673 Jun-07-2020, 06:48 AM
Last Post: ndc85430
  TypeError: _linspace_dispatcher() missing 1 required positional argument: 'stop' Ae_Lovecraft 3 10,411 May-28-2020, 03:33 PM
Last Post: Larz60+
  SyntaxError: positional argument follows keyword argument syd_jat 3 8,124 Mar-03-2020, 08:34 AM
Last Post: buran
  Type error: dump() missing 1 required positional argument: fp jaycuff13 2 28,782 Jul-13-2019, 10:21 AM
Last Post: jaycuff13

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020