কম্পিউটার টিউটোরিয়াল

পাইথনে ক্লাস মেথড বনাম স্ট্যাটিক মেথড

পাইথনে ক্লাস মেথড হলো একটি মেথড, যা ক্লাসের সাথে বাউন্ড থাকে কিন্তু সেই ক্লাসের অবজেক্টের সাথে নয়। স্ট্যাটিক মেথডগুলোও একই কিন্তু কিছু বেসিক পার্থক্য রয়েছে। ক্লাস মেথডের জন্য @classmethod ডেকোরেটর, এবং স্ট্যাটিক মেথডের জন্য @staticmethod ডেকোরেটর ব্যবহার করা হয়।

ক্লাস মেথডের সিনট্যাক্স:

class my_class:
    @classmethod
    def function_name(cls, arguments):
        # Function Body
        return value

স্ট্যাটিক মেথডের সিনট্যাক্স:

class my_class:
    @staticmethod
    def function_name(arguments):
        # Function Body
        return value

Classmethod এবং StaticMethod-এর পার্থক্য কী?

Class Method Static Method
ক্লাস মেথড প্রথম আর্গুমেন্ট হিসেবে cls (class) নেয়। স্ট্যাটিক মেথড কোনো নির্দিষ্ট প্যারামিটার নেয় না।
Class method ক্লাস স্টেট অ্যাক্সেস ও মডিফাই করতে পারে। Static Method ক্লাস স্টেট অ্যাক্সেস বা মডিফাই করতে পারে না।
Class method ক্লাসকে প্যারামিটার হিসেবে নিয়ে সেই ক্লাসের স্টেট জানতে পারে। Static methods ক্লাস স্টেট সম্পর্কে কিছুই জানে না। এই মেথডগুলো কিছু প্যারামিটার নিয়ে ইউটিলিটি টাস্ক করতে ব্যবহৃত হয়।
এখানে @classmethod ডেকোরেটর ব্যবহার হয়। এখানে @staticmethod ডেকোরেটর ব্যবহার হয়।

স্ট্যাটিক মেথডগুলো কিছু ইউটিলিটি টাস্ক করার জন্য ব্যবহৃত হয়, এবং ক্লাস মেথডগুলো ফ্যাক্টরি মেথডের জন্য ব্যবহৃত হয়। ফ্যাক্টরি মেথডগুলো বিভিন্ন ইউজ কেসের জন্য ক্লাস অবজেক্ট ফেরত দিতে পারে।

উদাহরণ কোড

from datetime import date as dt

class Employee:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    @staticmethod
    def isAdult(age):
        if age > 18:
            return True
        else:
            return False

    @classmethod
    def emp_from_year(emp_class, name, year):
        return emp_class(name, dt.today().year - year)

    def __str__(self):
        return 'Employee Name: {} and Age: {}'.format(self.name, self.age)

e1 = Employee('Dhiman', 25)
print(e1)
e2 = Employee.emp_from_year('Subhas', 1987)
print(e2)
print(Employee.isAdult(25))
print(Employee.isAdult(16))

আউটপুট

Employee Name: Dhiman and Age: 25
Employee Name: Subhas and Age: 31
True
False
  1. পাইথন Tkinter-এ after মেথড

  2. পাইথনে classmethod() ডেকোরেটর

  3. পাইথনে ইনহেরিটেন্স (Inheritance)

  4. পাইথনে ক্লাস মেথড ওভাররাইড কীভাবে করবেন?