پرسش

راه‌حل‌های تمیز و پایتونیک برای پیاده‌سازی سازنده‌های متعدد چیست؟

What is a clean, Pythonic way to implement multiple constructors?

چطور می‌تونم به صورت تمیز و پایتونیک، چندین سازنده را در پایتون پیاده‌سازی کنم؟

1403/06/06
پاسخ
رضا دولتی عاشق برنامه نویسی و هوش مصنوعی!
بیوگرافی رضا دولتی

برای اینکه بتونی چندین سازنده رو توی یه کلاس در پایتون داشته باشی، می‌تونی از متدهای کلاس (class methods) استفاده کنی. این کار باعث می‌شه که کدت تمیزتر و پایتونیک‌تر بشه.

مثال :

class MyClass:
    def __init__(self, value):
        self.value = value
    @classmethod
    def from_list(cls, values):
        # Create an instance from a list
        return cls(sum(values))
    @classmethod
    def from_dict(cls, dictionary):
        # Create an instance from a dictionary
        return cls(dictionary['value'])
# Example usage:
obj1 = MyClass(10)
obj2 = MyClass.from_list([1, 2, 3, 4])
obj3 = MyClass.from_dict({'value': 20})
print(obj1.value)  # Output: 10
print(obj2.value)  # Output: 10 (sum of [1, 2, 3, 4])
print(obj3.value)  # Output: 20

اینجا دو تا متد کلاسی داریم: from_list و from_dict. اینا بهت اجازه می‌دن که شیءهای کلاس رو با انواع مختلف داده‌ها بسازی. مثلا با یه لیست از اعداد یا یه دیکشنری.

- استفاده از @classmethod برای سازنده‌های اضافی خیلی خوبه چون کد رو تمیز و ساده نگه می‌داره.

- اینطوری می‌تونی کدت رو از تکرار و پیچیدگی اضافی دور نگه‌داری.

پاسخ: 1403/06/06
آخرین آپدیت: 1403/08/13