python-basic

⌘K
  1. Home
  2. python-basic
  3. OOP
  4. Python এর property ফাংশন

Python এর property ফাংশন

ধাপ ১: ক্লাস তৈরি করা

প্রথমে আমরা একটি ক্লাস তৈরি করি, যার নাম Student। ক্লাস হচ্ছে একটি ব্লুপ্রিন্ট, যার মাধ্যমে আমরা কোনো অবজেক্ট তৈরি করতে পারি। এখানে আমরা শিক্ষার্থীর তথ্য সংরক্ষণ করব।

class Student:
    pass

এই ধাপে শুধু ক্লাস ডিক্লেয়ার করা হলো। pass ব্যবহার করা হয়েছে, কারণ আপাতত কোনো কোড নেই। এরপর আমরা ক্লাসের মধ্যে ফাংশন (মেথড) তৈরি করব।

ধাপ ২: __init__ মেথড (Constructor) তৈরি করা

__init__ মেথড হচ্ছে কন্সট্রাক্টর, যা তখনই কল হয় যখন আমরা নতুন অবজেক্ট তৈরি করি। এটি মূলত ক্লাসের ভেরিয়েবলগুলোকে ইন্সট্যান্সের মধ্যে সংরক্ষণ করে।

class Student:
    def __init__(self, name, age):
        self.name = name  # শিক্ষার্থীর নাম সরাসরি সেট করছি
        self.age = age    # বয়স সরাসরি না সেট করে আমরা property ব্যবহার করব
  • __init__ মেথড: যখন আমরা Student ক্লাসের নতুন অবজেক্ট তৈরি করব, তখন এটি কল হবে।
  • self.name = name: এখানে self হচ্ছে সেই অবজেক্ট নিজেই। এতে আমরা name সেট করছি।
  • self.age = age: সরাসরি বয়স না সেট করে আমরা পরে property ব্যবহার করব, তাই এখানে সেট করছি না।

ধাপ ৩: Getter মেথড তৈরি করা

Getter মেথড হলো এমন একটি মেথড যা কোনো প্রাইভেট ভেরিয়েবল (যেমন _age) এর মান ফেরত দেয়। আমরা সরাসরি ভেরিয়েবলকে public না করে এই মেথড দিয়ে মান রিটার্ন করব।

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

    # Getter method: বয়স ফেরত দেওয়ার জন্য।
    def get_age(self):
        return self._age  # প্রাইভেট ভেরিয়েবল `_age` থেকে বয়স ফেরত দিচ্ছে
  • get_age: এই মেথড দিয়ে আমরা self._age ভেরিয়েবলটি পাবো। _age হচ্ছে প্রাইভেট ভেরিয়েবল, যা সরাসরি বাইরের কোনো কোড থেকে অ্যাক্সেস করা যাবে না।

ধাপ ৪: Setter মেথড তৈরি করা

Setter মেথডের কাজ হলো, কোনো মান সেট করার আগে সেটি যাচাই করে দেখা এবং সঠিক হলে সেট করা। এখানে আমরা বয়স যাচাই করছি যে তা ১ এর বেশি কিনা।

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

    def get_age(self):
        return self._age

    # Setter method: বয়স সেট করার সময় যাচাই করছি।
    def set_age(self, age):
        if age <= 0:
            raise ValueError("বয়স অবশ্যই ১ এর বেশি হতে হবে।")
        self._age = age  # `_age` হলো প্রাইভেট ভেরিয়েবল
  • set_age: আমরা আগে age সেট করার আগে যাচাই করছি যে এটি ০ এর বেশি কিনা। যদি বয়স ০ বা তার চেয়ে কম হয়, তবে আমরা একটি ত্রুটি (error) দিবো।
  • self._age: যদি বয়স সঠিক হয়, তাহলে আমরা _age নামের প্রাইভেট ভেরিয়েবলে সেট করছি।

ধাপ ৫: property তৈরি করা

Python এ property() ফাংশনের মাধ্যমে আমরা getter এবং setter কে একটি proper মেথডের মধ্যে কম্বাইন করতে পারি। এর ফলে আমরা সরাসরি age কে ভেরিয়েবল হিসেবে ব্যবহার করতে পারব, কিন্তু এর পেছনে setter এবং getter মেথড কাজ করবে।

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

    def get_age(self):
        return self._age

    def set_age(self, age):
        if age <= 0:
            raise ValueError("বয়স অবশ্যই ১ এর বেশি হতে হবে।")
        self._age = age

    # Python property: getter এবং setter কে property তে রূপান্তর।
    age = property(get_age, set_age)
  • property(get_age, set_age): এখানে আমরা get_age এবং set_age মেথডকে property হিসেবে সেট করেছি। এখন যখনই তুমি student.age অ্যাক্সেস করবে, তখন get_age মেথড কল হবে, আর যখনই student.age = 25 এর মতো কিছু সেট করবে, তখন set_age মেথড কল হবে।

শেষ কোড:

class Student:
    def __init__(self, name, age):
        self.name = name  # শিক্ষার্থীর নাম সরাসরি সেট করছি
        self.age = age    # বয়স সরাসরি না সেট করে আমরা property ব্যবহার করব

    # Getter method: বয়স ফেরত দেওয়ার জন্য।
    def get_age(self):
        return self._age

    # Setter method: বয়স সেট করার সময় যাচাই করছি।
    def set_age(self, age):
        if age <= 0:
            raise ValueError("বয়স অবশ্যই ১ এর বেশি হতে হবে।")
        self._age = age

    # Python property: getter এবং setter কে property তে রূপান্তর।
    age = property(get_age, set_age)

উপসংহার:

  1. ক্লাস: Student নামে একটি ক্লাস তৈরি করেছি।
  2. __init__: এর মধ্যে name এবং age প্রাথমিকভাবে সেট করছি।
  3. Getter: get_age() দিয়ে _age ফেরত দিচ্ছি।
  4. Setter: set_age() দিয়ে যাচাই করে _age সেট করছি।
  5. Property: property() দিয়ে getter এবং setter কে একত্রিত করছি যাতে সরাসরি age ভেরিয়েবল হিসেবে ব্যবহার করা যায়।

এই কোডের মাধ্যমে আমরা age কে নিরাপদভাবে সেট ও অ্যাক্সেস করতে পারছি, এবং প্রয়োজন অনুযায়ী যাচাই করতে পারছি।

তুমি যদি কোনো নির্দিষ্ট টপিকের কোড বিশ্লেষণ করে ধাপে ধাপে টিউটোরিয়াল চাও, তাহলে নিচের মতো করে প্রম্পট দিতে পারো:

উদাহরণ:

প্রম্পট:
“আমি OOP তে Getter এবং Setter সম্পর্কে বিশ্লেষণ করতে চাই। তুমি আমাকে ধাপে ধাপে বুঝিয়ে দাও কিভাবে Getter এবং Setter মেথড কাজ করে এবং কেন আমরা এগুলো ব্যবহার করি।
প্রথমে একটি ক্লাস তৈরি করো, তারপর ধাপে ধাপে Getter এবং Setter মেথড যোগ করো এবং প্রতিটি ধাপ ব্যাখ্যা করো। শেষে property() ব্যবহার করে কমপ্লিট কোড দেখাও। সবকিছু সহজ ভাষায় এবং কোডের প্রতিটি অংশের জন্য ব্যাখ্যা দাও যেন আমি ভালোভাবে বুঝতে পারি।”


অন্য উদাহরণ:
“আমি চাই তুমি আমাকে Django Model তৈরি করা এবং সেটার জন্য CRUD অপারেশন বুঝিয়ে দাও।
প্রথমে একটি মডেল তৈরি করো, তারপর প্রতিটি CRUD ফাংশনের জন্য আলাদা আলাদা ধাপে কোড দেখাও।
প্রতিটি ধাপের শেষে ব্যাখ্যা করো কেন এবং কীভাবে এটি কাজ করে। সহজ উদাহরণ সহ ব্যাখ্যা করলে ভালো হবে।”


এই ধরনের প্রম্পটের মাধ্যমে তুমি যে বিষয়টি সম্পর্কে বিস্তারিত জানতে চাও, সেটা স্পষ্টভাবে জানিয়ে দিতে পারবে এবং আমি তোমাকে ধাপে ধাপে সহজ ভাষায় বিশ্লেষণ করে বুঝিয়ে দেব।

How can we help?