# Programming Fundamentals/Objects/Python3

## objects.py

```# This class converts temperature between Celsius and Fahrenheit.
# It may be used by assigning a value to either Celsius or Fahrenheit
# and then retrieving the other value, or by calling the to_celsius or
# to_fahrenheit methods directly.
#
# References:
#     https://www.mathsisfun.com/temperature-conversion.html
#     https://en.wikibooks.org/wiki/Python_Programming

class Temperature(object):
_celsius = None
_fahrenheit = None

@property
def celsius(self):
return self._celsius

@celsius.setter
def celsius(self, value):
self._celsius = float(value)
self._fahrenheit = self.to_fahrenheit(self._celsius)

@property
def fahrenheit(self):
return self._fahrenheit

@fahrenheit.setter
def fahrenheit(self, value):
self._fahrenheit = float(value)
self._celsius = self.to_celsius(self._fahrenheit)

def __init__(self, celsius=None, fahrenheit=None):
if celsius != None:
self._celsius = celsius
self._fahrenheit = self.to_fahrenheit(celsius)
if fahrenheit != None:
self._fahrenheit = fahrenheit
self._celsius = self.to_celsius(fahrenheit)

def to_celsius(self, fahrenheit):
return (fahrenheit - 32) * 5 / 9

def to_fahrenheit(self, celsius):
return celsius * 9 / 5 + 32

# This program creates instances of the Temperature class to convert Cesius
# and Fahrenheit temperatures.

def main():
temp1 = Temperature(celsius=0)
print("temp1.celsius =", temp1.celsius)
print("temp1.fahrenheit =", temp1.fahrenheit)
print("")

temp1.celsius = 100
print("temp1.celsius =", temp1.celsius)
print("temp1.fahrenheit =", temp1.fahrenheit)
print("")

temp2 = Temperature(fahrenheit=0)
print("temp2.fahrenheit =", temp2.fahrenheit)
print("temp2.celsius =", temp2.celsius)
print("")

temp2.fahrenheit = 100
print("temp2.fahrenheit =", temp2.fahrenheit)
print("temp2.celsius =", temp2.celsius)

main()
```

## Try It

Copy and paste the code above into one of the following free online development environments or use your own Python3 compiler / interpreter / IDE.