Over the past few months, I’ve been getting back into the habit of reading books (or listening to them). It’s been a fresh start for me as I’ve picked up a few titles and managed to finish five of them, mostly in the categories of software engineering and leadership.
1st January 2020 was the official sunset date of Python 2. At NewsCred (now Welcome) we had a bunch of services written in Python 2 that we wanted to migrate to Python 3 as soon as we can, since the sunset date was approaching.
More than a year ago I wrote the post: Auto generating unique slug in Django. There we considered a model named Article, which had title and slug fields. We had overridden the save method of that model to automatically save the unique slug which had been generated by our written _get_unique_slug model method.
“ডেকরেটর! ওই যে বিভিন্ন অনুষ্ঠানের সাজ সজ্জা করে মানে ডেকরেট করে….. তো পাইথনে আবার তাদের কি কাজ!”
পোস্টের টাইটেল দেখে যদি আপনার মনে এরকম প্রশ্নের উদয় হয় তাহলেও দোষের কিছু নেই। পাইথনে ডেকরেটর কিছুটা এডভান্স আর কমপ্লেক্স টপিক। তবে চিন্তা নেই, এই পোস্টে আমরা একটু সহজ ভাবে, ধাপে ধাপে জানার চেষ্টা করবো পাইথনে ডেকরেটর জিনিষটা কী, কীভাবে কাজ করে আর কীভাবেই বা ব্যাবহার করে।
আসলে লেখাটির সঠিক শিরোনাম কি হবে, কিছুক্ষণ চিন্তা করেও যখন ঠিক করতে পারছিলাম না, ঠিক করলাম আর চিন্তা করে সময় নষ্ট না করে মূল বিষয়টা লিখে ফেলি।
আচ্ছা, একটা ফাইল ক্রিয়েট করি email.py নামে। এর ভেতর শুধুমাত্র এই দুটি লাইন লিখে সেভ করি:
কিছু ক্ষেত্রে দেখা যায় আমাদের এমন একটি ক্লাস দরকার পরছে, যার আচরণ হবে পাইথনের কোন বিল্ট-ইন ক্লাসের মত। কিন্তু তাতে আমাদের কাস্টম কিছু ফিচার দরকার। এরকম পরিস্থিতিতে আমরা আমাদের ক্লাস কে পাইথনের বিল্ট-ইন ক্লাস থেকে ইনহ্যারিট করতে পারি। এতে করে ঐ ক্লাস, বিল্ট-ইন ক্লাসের সকল বৈশিষ্ট্য অর্জন করবে, এবং আমরা আমাদের প্রয়োজন মত কাস্টমাইজও করে নিতে পারবো।
In this post we are going to know how to generate unique slug in django automatically. So what is slug? Consider the URL of this post: /auto-generating-unique-slug-in-django/ . Here the bold part of the URL is called slug.
First, consider a model Article in which we will generate the unique slug.
Django is a popular Python web framework. In this tutorial we are going to create a simple feedback system using Python 3 and Django 1.9. It is assumed that you know the basics of django. If not, then please read the django official tutorial first.
অ্যাবস্ট্রাক্ট ক্লাস হল – যেভাবে সাবক্লাস গুলো ডিজাইন করা হবে তার একটা নকশা বা ব্লু-প্রিন্ট। আমরা যদি টিমে কাজ করে থাকি তাহলে এরকম প্রয়োজন হতে পারে যে, একজন ডেভেলপার শুরুতে ঠিক করে দিবেন ক্লাস গুলোতে কি কি মেথড/প্রোপার্টি থাকবে। অন্য ডেভেলপার সে অনুযায়ী ক্লাস ডিজাইন করবেন। অর্থাৎ একজন নকশা করবেন, আরেকজন ইমপ্লিমেন্ট করবেন। এরকম পরিস্থিতির জন্য আছে অ্যাবস্ট্রাক্ট বেস ক্লাস।
বেশির ভাগ প্রোগ্রামারই মাল্টিপল ইনহ্যারিটেন্স ব্যাবহার করতে নিষেধ করেন। তারপরও বিশেষ কিছু ক্ষেত্রে আমাদের মাল্টিপল ইনহ্যারিটেন্স ব্যাবহার করতে হয়। তাহলে জেনে নেয়া যাক পাইথনে মাল্টিপল ইনহ্যারিটেন্স যে অর্ডার অনুসারে কাজ করে।
নিচের ডায়াগ্রাম টি দেখি:
এই ডায়াগ্রাম অনুযায়ী কোড লিখি তাহলে:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 class A(object): def test(self): print("Test from A") class B(object): def test(self): print("Test from B") class C(A, B): pass c_instance = C() c_instance.