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

পাইথনে ওল্ড-স্টাইল এবং নিউ-স্টাইল ক্লাসের পার্থক্য কী?


পাইথন ২.এ বিল্ট-ইন টাইপ বেস ক্লাস হিসেবে আছে কিনা তার ওপর নির্ভর করে ক্লাসের দুটি স্টাইল রয়েছে -

"classic" style বা old style classes: বেস ক্লাস হিসেবে কোনো বিল্ট-ইন টাইপ নেই:
>>> class OldSpam:
    # no base class
    ...
    pass
>>> OldSpam.__bases__
()

"New" style classes: তাদের বেস ক্লাস হিসেবে একটি বিল্ট-ইন টাইপ থাকে, অর্থাৎ সরাসরি বা পরোক্ষভাবে object তাদের বেস ক্লাস -

>>> class NewSpam(object):
    # directly inherit from object ...
    pass
>>> NewSpam.__bases__
(<type 'object'>,)
>>> class IntSpam(int):
    # indirectly inherit from object...
    ...
    pass
>>> IntSpam.__bases__
(<type 'int'>,)
>>> IntSpam.__bases__[0].__bases__  # ... because int inherits from object
(<type 'object'>,)

ক্লাস লিখার সময় সবসময় নিউ-স্টাইল ক্লাসের জন্য যাওয়া উচিত। এর সুবিধাগুলো অসংখ্য, 그중 কিছু -

  • ডেসক্রিপ্টর সাপোর্ট। বিশেষভাবে, নিচের কনস্ট্রাক্টগুলো ডেসক্রিপ্টরের মাধ্যমে সম্ভব -
  • classmethod - একটি মেথড যা ইনস্ট্যান্সের বদলে ক্লাসকে ইমপ্লিসিট আর্গুমেন্ট হিসেবে পায়।
  • staticmethod - একটি মেথড যা প্রথম আর্গুমেন্ট হিসেবে ইমপ্লিসিট self পায় না।
  • property দিয়ে প্রপার্টি: অ্যাট্রিবিউটের গেটিং, সেটিং এবং ডিলিটিং ম্যানেজ করার জন্য ফাংশন তৈরি করা।

পাইথন ৩.এ শুধু নিউ-স্টাইল ক্লাস ইমপ্লিসিটলি সাপোর্ট করা হয়। ক্লাস ডিক্লেয়ারেশনে object শব্দ প্যারেনথেসিতে লিখতে হয় না।


  1. C#-এ ইন্টারফেস (Interface) এবং ক্লাস (Class) এর পার্থক্য

  2. C#-এ ক্লাস (Class) এবং অবজেক্ট (Object) এর পার্থক্য

  3. Tkinter-এ Tk এবং Toplevel ক্লাসের পার্থক্য

  4. Python-এ tkinter এবং tkinter.ttk উইজেটের পার্থক্য কী?