Arup Rakshit <a...@zeit.io> writes: > class RefrigeratedShippingContainer(ShippingContainer): > # ... > > @staticmethod > def _c_to_f(celsius): > return celsius * 9/5 + 32 > > @staticmethod > def _f_to_c(fahrenheit): > return (fahrenheit - 32) * 5/9
Both those functions are decorated with ‘staticmethod’. That means <URL:https://docs.python.org/3/library/functions.html#staticmethod> that the function will, unlike typical methods, not automatically receive any implicit first argument. That's why the function signature has no ‘self’ or ‘klass’ or the like. > If I call `_c_to_f`, `_f_to_c` methods on `self` instead of > `RefrigeratedShippingContainer` class object, still it works. That's right, and is indeed the point of making a static method on a class. From the above documentation link: [A staticmethod-decorated function] can be called either on the class (such as `C.f()`) or on an instance (such as `C().f()`). The instance is ignored except for its class. > So what is the reason behind of this calling on the class object, > instead class instance object? Whichever makes the most sense in the code where that function is called. The purpose of a static method is to imply that, though the function *could* be entirely separate from any class, it is conceptually part of a spacific class's behaviour. In the specific example you show, I expect the code maintenance was deemed to be easier when the RefrigeratedShippingContainer encapsulates the conversions of temperature units. -- \ “When we pray to God we must be seeking nothing — nothing.” | `\ —Francis of Assisi | _o__) | Ben Finney -- https://mail.python.org/mailman/listinfo/python-list