Skip to main content

Constructor and Destructor in Python

পাইথন এ ডিফল্ট কিছু  মেথড আছে  যাদেরকে ম্যাজিক মেথড বলা হয়। এই  মেথড গুলা __ মেথড নাম __ দিয়ে লেখা হয় .( আন্ডার স্কোর আন্ডার স্কোর একসাথে ডান্ডার ও বলা যায় )

__init__():
এটাকে  কন্সট্রাক্টর বলা হয়।  কাজ কি ?
কাজ হলো যখন কোনো ক্লাস এর ইনস্ট্যান্স create  করা হয় তখন এই মেথড নিজে থেকে কল হয়।  যেমন আমার যদি একটা ক্যাট  ক্লাস নেই।


class Cat:
    def __init__(self, legs, colour):
        self.legs = legs
        self.color = color

    def get_name(self, name):
        return self.name = name
fido = Cat(4, "brown")
spot = Cat(3, "yellow")
এই  ক্লাস এ যদি আমরা ক্যাট এর নাম পেতে  চাই তাহলে আমাদের Cat ().get_name ("Mini") কল করতে হবে।  কিন্তু লেগ্স এন্ড কালার এর জন্য কিন্তু Cat ().get_name ("Mini") কল করা লাগসে না।  আমি যখন এ Cat(4, "brown")     initializeকরছি  তখনই  __init__  কল হইয়া গেসে ।

সাধারণত কোনো ক্লাস কল করার সাথে সাথে যদি কোনো ভ্যালু এসাইন করতে চাই তাহলে __init__ব্যবহার  করা হয়।

__del__():
অবজেক্ট ডেস্ট্রয় করার জন্য একটা ডেস্ট্রাক্টর মেথড ও আসে।  __del__ দিয়ে ডিফাইন করা হয়। ডেস্ট্রাক্টর normally refference  using gurbage কালেক্ট করে রাখে।  python ই অনেকে একে  ইভিল ও বলে থাকে হাঃ হাঃ ।  পাইথন এ অবজেক্ট ডেস্ট্রয় এর দরকার পরে না আসলে কারণ  স্কোপ এর বাইরে গালে এ অবজেক্ট ক্লিন হইয়া যাই।
class Cat:
    def __init__(self, legs, colour, id):
        self.legs = legs
        self.color = color
        self.id = id
        print("set ID")

    def __del__(self, id):
        print("destroy ID")
def
get_name(self, name): return self.name = name a = Cat(4, "black", 1) Cat().__del__(1)

Comments

Post a Comment

Popular posts from this blog

How to set auto save in Sublime text editor

1. Press Ctrl+Shift+P 2 Package install/install package 3.Search autosave 4. Click to install 5. Go to Preference -> Package setting -> Auto Save -> Settings User 6. Paste the code   // Auto save default setting { "auto_save_on_modified": true, "auto_save_delay_in_seconds": 1, "auto_save_all_file": true, "auto_save_current_file": "", "auto_save_backup": false, "auto_save_backup_suffix": "autosave" } 7. Save the file, close the file and finally done :) .

One-To-One লিংক ব্যবহার করে কিভাবে Django ডিফল্ট User মডেলকে এক্সটেন্ড করতে হয়?

Django User মডেলকে ব্যবহার করে কয়েক ভাবে ইউসার মডেল এর ফিল্ড বাড়ানো যায় ।  One-To-One লিংক তার মধ্যে একটা।  আমি ম্যাক্সিমাম সময় এই পদ্ধতি এপলাই করে থাকি।  এজন্য আমাদের একটা নতুন মডেল বানাতে হবে এক্সট্রা ফিল্ড গুলা অ্যাড করার জন্য যেগুলা ইউসার মডেল এর সাথে সম্পর্কিত।  Profile নামে  একটা মডেল লিখি যেখানে আমরা ইউসার এর birthdate,  এবং address অ্যাড করবো। models.py  from django.db import models from dajngo.contrib.auth.models import User class Profile(models.Model):     user = models.OneToOneField(User, on_delete=models.CASCADE)     birth_date = models.DateField(null=True, blank=True)     address = models.TextField(max_length=500, blank=True)  আমরা এখন কিছু সিগন্যাল অ্যাড করবো যাতে আমরা যখন কোনো ইউসার অ্যাড/আপডেট করবো তখন যেন আমাদের Profile মডেলটা ও অটোমেটিক অ্যাড/আপডেট হয়ে যায় । from django.db import models from django.contrib.auth.models import User from django.db.models.signals import post_save from django.dispatch import receiver class Profile(models.Model):