Python - Class and Static Methods

Class Methods

Example 1
class Circle(object):
    no_of_circles = 0
    def __init__(self, radius):
        self.__radius = radius
        Circle.no_of_circles += 1
    def getCirclesCount(self):
        return Circle.no_of_circles
c1 = Circle(3.5)
c2 = Circle(5.2)
c3 = Circle(4.8)
print(c1.getCirclesCount())       # -> 3
print(c2.getCirclesCount())       # -> 3
print(Circle.getCirclesCount(c3)) # -> 3
print(Circle.getCirclesCount())   # -> TypeError
Output
3
3
3
TypeError: getCirclesCount() missing 1 required positional argument: 'self'

Example 2
class Circle(object):
    no_of_circles = 0
    def __init__(self, radius):
        self.__radius = radius
        Circle.no_of_circles += 1
    @classmethod
    def getCirclesCount(self):
        return Circle.no_of_circles
c1 = Circle(3.5)
c2 = Circle(5.2)
c3 = Circle(4.8)
print(c1.getCirclesCount())     # -> 3
print(c2.getCirclesCount())     # -> 3
print(Circle.getCirclesCount()) # -> 3
Output
3
3
3

Static Methods


Example 3
def square(x):
        return x**2
class Circle(object):
    def __init__(self, radius):
        self.__radius = radius
    def area(self):
        return 3.14*square(self.__radius)
c1 = Circle(3.9)
print(c1.area())
print(square(10))

Output

47.7594
100

Example 4
class Circle(object):
    def __init__(self, radius):
        self.__radius = radius
    @staticmethod
    def square(x):
        return x**2
    def area(self):
        return 3.14*self.square(self.__radius)
c1 = Circle(3.9)
print(c1.area())  
print(square(10))        # -> NameError
print(Circle.square(10)) # -> 100
print(c1.square(10))     # -> 100
Output
47.7594
NameError: name 'square' is not defined
100
100

No comments:

Post a Comment