পাইথন ক্লাসে 'ক্লস' পরিবর্তনশীল কী?


270

পাইথন ক্লাসে clsমাঝে selfমধ্যে যুক্তি হিসাবে পরিবর্তে কেন ব্যবহৃত হয় ?

উদাহরণ স্বরূপ:

class Person:
    def __init__(self, firstname, lastname):
        self.firstname = firstname
        self.lastname = lastname

    @classmethod
    def from_fullname(cls, fullname):
        cls.firstname, cls.lastname = fullname.split(' ', 1)

উত্তর:


293

মধ্যে পার্থক্য "self"এবং "cls"সংজ্ঞায়িত করা হয় PEP 8। অ্যাড্রিন যেমন বলেছিলেন, এটি কোনও বাধ্যতামূলক নয়। এটি একটি কোডিং স্টাইল। PEP 8বলেছেন:

ফাংশন এবং পদ্ধতি আর্গুমেন্ট :

সবসময় selfউদাহরণের পদ্ধতিতে প্রথম যুক্তির জন্য ব্যবহার করুন।

সর্বদা clsক্লাস পদ্ধতিতে প্রথম যুক্তির জন্য ব্যবহার করুন।


56

এটি একটি শ্রেণিবদ্ধের ক্ষেত্রে ব্যবহৃত হয়। আরও তথ্যের জন্য এই রেফারেন্স পরীক্ষা করুন।

সম্পাদনা: অ্যাড্রিন স্পষ্ট হিসাবে, এটি একটি সম্মেলন। আপনি আসলে কিছুই কিন্তু ব্যবহার করতে পারেন clsএবং selfব্যবহৃত হয় ( PEP8 )।


52

clsবোঝায় যে পদ্ধতিটি শ্রেণীর অন্তর্ভুক্ত রয়েছে এবং স্ব-ইঙ্গিত দেয় যে পদ্ধতিটি শ্রেণীর উদাহরণের সাথে সম্পর্কিত, সুতরাং সদস্যের সাথে clsশ্রেণীর নাম অ্যাক্সেস করা হয় যেখানে নিজের সাথে শ্রেণীর উদাহরণ দিয়ে অ্যাক্সেস করা হয় ... এটি একই ধারণা যেমন static memberএবং non-static membersজাভা আপনি জাভা পটভূমি থেকে এসেছেন পারেন।


1
জাভা রেফারেন্সের জন্য আপনাকে ধন্যবাদ, এখন বুঝতে।
এডেনশো

আপনার উল্লেখ করার চেয়ে static memberএবং non-static membersসি ++ এর প্রসঙ্গে বুঝতে পেরেছেন
অমিত জেএস

18

এটি খুব ভাল প্রশ্ন তবে প্রশ্ন হিসাবে চায় না। 'স্ব' এবং 'ক্লস' ব্যবহৃত পদ্ধতির মধ্যে পার্থক্য রয়েছে যদিও অ্যানালগিকভাবে তারা একই জায়গায় রয়েছে

def moon(self, moon_name):
    self.MName = moon_name

#but here cls method its use is different 

@classmethod
def moon(cls, moon_name):
    instance = cls()
    instance.MName = moon_name

এখন আপনি উভয়ই চাঁদ ফাংশন দেখতে পাবেন তবে একটিকে শ্রেণীর অভ্যন্তরে ব্যবহার করা যেতে পারে অন্য ফাংশনের নাম মুনটি যে কোনও শ্রেণির জন্য ব্যবহার করা যেতে পারে।

ব্যবহারিক প্রোগ্রামিং পদ্ধতির জন্য:

সার্কেল ক্লাস ডিজাইন করার সময় আমরা অঞ্চল পরিবর্তনের জন্য স্ব পরিবর্তে ক্লস হিসাবে ব্যবহার করি কারণ আমরা অঞ্চলটি কেবলমাত্র নির্দিষ্ট বৃত্তের মধ্যে সীমাবদ্ধ রাখতে চাই না।


আপনি যদি আরও কিছু যুক্ত করতে চান যা কোডাররা এটির জন্য সন্ধান করছে, যদি সঠিক হয় তবে তা অনুমোদন করবে।
Thexorist

2

পরিবর্তে একটি স্ব পরামিতি গ্রহণ, বর্গ পদ্ধতি একটি নিতে CLS যে পয়েন্ট পরামিতির বর্গ -আর না বস্তুর উদাহরণস্বরূপ -when পদ্ধতি বলা হয়। যেহেতু শ্রেণি পদ্ধতিতে কেবল এই ক্লস যুক্তির অ্যাক্সেস রয়েছে তাই এটি অবজেক্ট উদাহরণের অবস্থাটি পরিবর্তন করতে পারে না । এর জন্য স্ব ব্যবহার করতে হবে require তবে শ্রেণিবদ্ধ পদ্ধতিগুলি এখনও শ্রেণীর রাজ্যকে সংশোধন করতে পারে যা শ্রেণীর সমস্ত দৃষ্টান্তে প্রযোজ্য।

- পাইথন ট্রিকস

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.