বাংলায় পাইথন
  • পরিচিতি
  • ইনস্টলেশন
  • ব্যাসিক কনসেপ্ট
    • সাধারণ কিছু অপারেশন
    • আরও কিছু নিউমেরিক অপারেশন
    • স্ট্রিং
    • ব্যাসিক ইনপুট আউটপুট
    • স্ট্রিং অপারেশন
    • টাইপ কনভার্সন
    • ভ্যারিয়েবল
    • ইনপ্লেস অপারেটর
    • এডিটর এর ব্যবহার
  • কন্ট্রোল স্ট্রাকচার
    • বুলিয়ান
    • if স্টেটমেন্ট
    • else স্টেটমেন্ট
    • বুলিয়ান লজিক
    • অপারেটর প্রেসিডেন্স
    • while লুপ
    • লিস্ট
    • লিস্ট অপারেশন
    • লিস্ট ফাংশন
    • রেঞ্জ
    • for লুপ
  • গুরুত্বপূর্ণ ডাটা টাইপ
    • None
    • ডিকশনারি
    • ডিকশনারি ফাংশন
    • টাপল
    • আবারও লিস্ট
    • লিস্ট ও ডিকশনারি কম্প্রিহেনশন
  • ফাংশন ও মডিউল
    • কোডের পুনব্যবহার
    • ফাংশন
    • ফাংশন আর্গুমেন্ট
    • ফাংশন রিটার্ন
    • কমেন্ট ও ডক স্ট্রিং
    • অবজেক্ট হিসেবে ফাংশন
    • মডিউল
    • স্ট্যান্ডার্ড লাইব্রেরী
    • pip
  • ফাইল ও এক্সেপশন
    • এক্সেপশন
    • এক্সেপশন হ্যান্ডেলিং
    • finally
    • এক্সেপশন Raise
    • Assertions
    • ফাইল খোলা
    • ফাইল পড়া
    • ফাইলে লেখা
    • ফাইল নিয়ে সঠিক কাজ
  • ফাংশনাল প্রোগ্রামিং
    • ভূমিকা
    • ল্যামডা
    • ম্যাপ ও ফিল্টার
    • জেনারেটর
    • ডেকোরেটর
    • রিকারসন
    • সেট
    • itertools
  • অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং
    • ক্লাস
    • ইনহেরিটেন্স
    • ম্যাজিক মেথড
    • অপারেটর অভারলোডিং
    • অবজেক্ট লাইফ সাইকেল
    • ডাটা হাইডিং
    • স্ক্লাস মেথড ও ট্যাটিক মেথড
    • প্রোপার্টিস
  • রেগুলার এক্সপ্রেশন
    • পরিচিতি
    • মেটা ক্যারেক্টার
    • ক্যারেক্টার ক্লাস
    • গ্রুপ
    • স্পেশাল সিকুয়েন্স
  • অতিরিক্ত কিছু বিষয়
    • পাইথনিকনেস
    • PEP
    • main
    • # -- coding: utf-8 --
    • #! /usr/bin/env python
    • CPython
    • ডকুমেন্টেশন পড়া
  • প্যাকেজিং
Powered by GitBook
On this page
  1. অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং

প্রোপার্টিস

কোন একটি মেথডের উপর property ডেকোরেটোর ব্যবহার করে প্রোপার্টি ডিফাইন করা হয়। এর একটা বহুল ব্যবহার দেখা যায় কোন ইন্সট্যান্স অ্যাট্রিবিউটকে রিড-অনলি বানানোর ক্ষেত্রে। যখন একটি ইন্সট্যান্স অ্যাট্রিবিউটকে কল করা হয় এবং যদি ওই নামে একটি মেথড থাকে যা কিনা property ডেকোরেটোর দিয়ে ডেকোরেট করা, তখন পক্ষান্তরে সেই মেথডটিই কল হয়। আর এভাবেই একটি অ্যাট্রিবিউটকে রিড-অনলি করার একটা রাস্তা পাওয়া যায়। নিচের উদাহরণটি দেখলে আরও পরিষ্কার হয়ে যাবে।

class Pizza:
    def __init__(self, toppings):
        self.toppings = toppings

    @property
    def pineapple_allowed(self):
        return False

pizza = Pizza(["cheese", "tomato"])
print(pizza.pineapple_allowed)
pizza.pineapple_allowed = True

আউটপুট,

False
Traceback (most recent call last):
  File "/Users/nuhil/Documents/Python/property.py", line 11, in <module>
    pizza.pineapple_allowed = True
AttributeError: can't set attribute

setter/getter ফাংশন ব্যবহার করেও প্রোপার্টি ডিফাইন করা যায়। setter ফাংশন ব্যবহার করে প্রোপার্টির ভ্যালু সেট করা যায়। আর getter ফাংশন ব্যবহার করে ওই প্রোপার্টির ভ্যালু অ্যাক্সেস করা যায়। setter ডিফাইন করার জন্য প্রোপার্টির নাম এবং একটি ডট চিহ্ন দিয়ে setter কিওয়ার্ড লিখে একটি ডেকোরেটর হিসেবে নির্দেশ করতে হয়। getter ডিফাইন করার ক্ষেত্রেও একই নিয়ম।

উদাহরণ,

উপরের প্রোগ্রামে, প্রথমত ৭ নাম্বার লাইনে pineapple_allowed মেথডকে একটি প্রোপার্টি ডিফাইন করা হয়েছে। এতে করে, ২০ নাম্বার লাইনে এই প্রোপার্টির ভ্যালু অ্যাক্সেস করতে গেলে বস্তুত pineapple_allowed মেথডটি কল হয় এবং যা পক্ষান্তরে self._pineapple_allowed = False এর উপর ভিত্তি করে False রিটার্ন করে। এরপর, ১০ নাম্বার লাইনে, @pineapple_allowed.setter ডেকোরেটর ব্যবহার করে ওই প্রোপার্টির জন্য একটি setter মেথড ডিফাইন করা হয়েছে। আর তাই, ২১ নাম্বার লাইনে pizza.pineapple_allowed = True স্টেটমেন্ট এক্সিকিউট হবার সময় আসলে pineapple_allowed সেটার মেথডটি কল হচ্ছে। এই মেথডটি ১৫ নাম্বার লাইনে, _pineapple_allowed নামের প্রাইভেট ভ্যারিয়েবলের মান বদলে দেয় যার প্রমাণ পাওয়া যায় ২২ নাম্বার লাইনে নতুন করে print(pizza.pineapple_allowed) প্রিন্টের মাধ্যমে।

আউটপুট,

False
Enter the password: Sw0rdf1sh!
True
Previousস্ক্লাস মেথড ও ট্যাটিক মেথডNextরেগুলার এক্সপ্রেশন

Last updated 6 years ago

cover