Reasoning of calling a method on class object instead of class instance object
Arup Rakshit
ar at zeit.io
Mon Mar 18 14:09:20 EDT 2019
Hi,
In this piece of code:
class RefrigeratedShippingContainer(ShippingContainer):
MAX_CELSIUS = 4.0
def __init__(self, owner_code, contents, celsius):
super().__init__(owner_code, contents)
if celsius > RefrigeratedShippingContainer.MAX_CELSIUS:
raise ValueError("Temperature too hot!")
self._celsius = celsius
@staticmethod
def _c_to_f(celsius):
return celsius * 9/5 + 32
@staticmethod
def _f_to_c(fahrenheit):
return (fahrenheit - 32) * 5/9
@staticmethod
def _make_bic_code(owner_code, serial):
return iso6346.create(owner_code=owner_code,
serial=str(serial).zfill(6),
category='R')
@property
def celsius(self):
return self._celsius
@celsius.setter
def celsius(self, value):
if value > RefrigeratedShippingContainer.MAX_CELSIUS:
raise ValueError("Temperature too hot!")
self._celsius = value
@property
def fahrenheit(self):
return RefrigeratedShippingContainer._c_to_f(self.celsius)
@fahrenheit.setter
def fahrenheit(self, value):
self.celsius = RefrigeratedShippingContainer._f_to_c(value)
If I call `_c_to_f`, `_f_to_c` methods on `self` instead of `RefrigeratedShippingContainer` class object, still it works. So what is the reason behind of this calling on the class object, instead class instance object?
Thanks,
Arup Rakshit
ar at zeit.io
More information about the Python-list
mailing list