পাইথন ২.এ বিল্ট-ইন টাইপ বেস ক্লাস হিসেবে আছে কিনা তার ওপর নির্ভর করে ক্লাসের দুটি স্টাইল রয়েছে -
"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 শব্দ প্যারেনথেসিতে লিখতে হয় না।