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

পাইথনে ক্লাস ডেটা ইনস্ট্যান্সগুলোতে শেয়ার হয় না তা নিশ্চিত করা

পাইথনে একটি ক্লাস ইনস্ট্যানশিয়েট (instantiate) করলে এর সকল ভেরিয়েবল এবং ফাংশন নতুন ইনস্ট্যান্সে ইনহেরিট হয়। কিন্তু কখনও কখনও আমরা চাই না যে প্যারেন্ট ক্লাসের কিছু ভেরিয়েবল চাইল্ড ক্লাসে ইনহেরিট হোক। এই নিবন্ধে সেটি রোধ করার দুটি পদ্ধতি দেখানো হয়েছে।

ইনস্ট্যানশিয়েশন উদাহরণ

নিচের উদাহরণে দেখানো হয়েছে কিভাবে ভেরিয়েবলগুলো একটি ক্লাস থেকে ইনস্ট্যানশিয়েট হয় এবং সকল ইনস্ট্যান্সে শেয়ার হয়।

class MyClass:
    listA = []  # Class variable

# Instantiate both classes
x = MyClass()
y = MyClass()

# Manipulate both classes
x.listA.append(10)
y.listA.append(20)
x.listA.append(30)
y.listA.append(40)

# Print Results
print("Instance X:", x.listA)
print("Instance Y:", y.listA)
আউটপুট

উপরোক্ত কোড রান করলে নিচের ফলাফল পাওয়া যাবে:

Instance X: [10, 20, 30, 40]
Instance Y: [10, 20, 30, 40]

দেখা যাচ্ছে, দুটি ইনস্ট্যান্স একই লিস্ট শেয়ার করছে।

__init__ মেথডে প্রাইভেট ক্লাস ভেরিয়েবল ব্যবহার করে

আমরা __init__ মেথড ব্যবহার করে ক্লাসের ভেরিয়েবলগুলোকে প্রাইভেট (ইনস্ট্যান্স ভেরিয়েবল) বানায়। এই ভেরিয়েবলগুলো প্যারেন্ট ক্লাস ইনস্ট্যানশিয়েট হওয়ার সময় শেয়ার হয় না।

উদাহরণ
class MyClass:
    def __init__(self):
        self.listA = []  # Instance variable

# Instantiate both classes
x = MyClass()
y = MyClass()

# Manipulate both classes
x.listA.append(10)
y.listA.append(20)
x.listA.append(30)
y.listA.append(40)

# Print Results
print("Instance X:", x.listA)
print("Instance Y:", y.listA)
আউটপুট

উপরোক্ত কোড রান করলে নিচের ফলাফল পাওয়া যাবে:

Instance X: [10, 30]
Instance Y: [20, 40]

এখন প্রতিটি ইনস্ট্যান্সের নিজস্ব লিস্ট আছে।

বায়রে ভেরিয়েবল ডিক্লেয়ার করে

এই পদ্ধতিতে, আমরা ক্লাসের বাইরে ভেরিয়েবলগুলো পুনরায় ডিক্লেয়ার করি। ইনস্ট্যানশিয়েশনের সময় ভেরিয়েবলগুলো পুনরায় ইনিশিয়ালাইজ হয় বলে সেগুলো শেয়ার হয় না।

উদাহরণ
class MyClass:
    listA = []

# Instantiate both classes
x = MyClass()
y = MyClass()
x.listA = []  # Re-declare outside
y.listA = []

# Manipulate both classes
x.listA.append(10)
y.listA.append(20)
x.listA.append(30)
y.listA.append(40)

# Print Results
print("Instance X:", x.listA)
print("Instance Y:", y.listA)
আউটপুট

উপরোক্ত কোড রান করলে নিচের ফলাফল পাওয়া যাবে:

Instance X: [10, 30]
Instance Y: [20, 40]
  1. পাইথনে ভায়োলিন প্লেটের কাজকর্ম প্রদর্শন

  2. পাইথনে একটি ক্লাস কি দেওয়া সুপার ক্লাসের সাবক্লাস তা কীভাবে চেক করবেন?

  3. পাইথনে ক্লাস ভেরিয়েবল ডিফাইন করার সঠিক পদ্ধতি কী?

  4. পাইথনে অবজেক্ট-ওরিয়েন্টেড কনসেপ্ট সংক্ষেপে ব্যাখ্যা