পাইথনে "ক্লাস পদ্ধতি" এবং "উদাহরণ পদ্ধতি" কী?
"মান্য পদ্ধতি" কোনও মানটি (বা কোন পার্শ্ব-প্রতিক্রিয়াটি করতে হবে) তা বের করার জন্য উদাহরণে থাকা তথ্য ব্যবহার করে। এগুলি খুব সাধারণ।
একটি "শ্রেণি পদ্ধতি" শ্রেণি সম্পর্কে তথ্য ব্যবহার করে (এবং সেই শ্রেণীর উদাহরণ নয়) এটি কী করে তা প্রভাবিত করতে (তারা সাধারণত বিকল্প কনস্ট্রাক্টর হিসাবে নতুন উদাহরণ তৈরি করতে ব্যবহৃত হয়, এবং এটি অবিশ্বাস্যভাবে সাধারণ হয় না)।
একটি "স্ট্যাটিক পদ্ধতি" শ্রেণি বা উদাহরণ সম্পর্কে কোনও তথ্য ব্যবহার করে না এটি কী করে তা গণনা করে। এটি সুবিধার জন্য সাধারণত ক্লাসে থাকে। (যেমন, এগুলি খুব সাধারণও নয়))
এক্স এর ফাংশন
গণিতের ক্লাসটি মনে রাখবেন, "y x এর ফাংশন f(x)
?" কোডে এটি প্রয়োগ করুন:
y = function(x)
উপরোক্ত দ্বারা বোঝানো হচ্ছে যেহেতু x
পরিবর্তন y
হতে পারে, পরিবর্তিত হতে পারে x
। আমরা যখন বলি "এর y
কাজ x
"
কি হবে y
হতে যখন z
হয় 1
? 2
? 'FooBarBaz'
?
y
এর কোনও ফাংশন নয় z
, তাই z
আমাদের function
খাঁটি ফাংশন ধরে ধরে ফাংশনের ফলাফলকে কিছু হতে পারে এবং প্রভাব ফেলতে পারে না । (যদি এটি z
বৈশ্বিক পরিবর্তনশীল হিসাবে অ্যাক্সেস করে তবে এটি কোনও খাঁটি ফাংশন নয় - এটি কার্যকরী বিশুদ্ধতা দ্বারা বোঝানো হয়েছে))
নিম্নলিখিত বিবরণগুলি পড়ার সাথে সাথে উপরের বিষয়গুলি মনে রাখবেন:
তাত্ক্ষণিক পদ্ধতি
একটি দৃষ্টান্ত পদ্ধতি ফাংশন যে একটি ফাংশন এর একটি দৃষ্টান্ত । ফাংশনটি তার পক্ষে যুক্তি হিসাবে নিখুঁতভাবে উদাহরণটি গ্রহণ করে এবং ফাংশনটি আউটপুট নির্ধারণ করতে উদাহরণটি ব্যবহৃত হয়।
উদাহরণ পদ্ধতির অন্তর্নির্মিত উদাহরণ হ'ল স্ট্রাইয়ার:
>>> 'ABC'.lower()
'abc'
str.lower
স্ট্রিংয়ের উদাহরণে ডাকা হয় এবং এটি কোন নতুন স্ট্রিংটি ফিরে আসবে তা নির্ধারণের জন্য উদাহরণটিতে থাকা তথ্য ব্যবহার করে।
শ্রেণি পদ্ধতি:
মনে রাখবেন, পাইথনে, সমস্ত কিছুই একটি বস্তু। এর অর্থ ক্লাসটি একটি অবজেক্ট এবং কোনও ফাংশনের আর্গুমেন্ট হিসাবে পাস করা যেতে পারে।
একটা ক্লাস পদ্ধতি একটি ফাংশন যে একটি ফাংশন এর বর্গ । এটি শ্রেণিটিকে এটির পক্ষে যুক্তি হিসাবে গ্রহণ করে।
একটি অন্তর্নির্মিত উদাহরণ হ'ল dict.fromkeys
:
>>> dict.fromkeys('ABC')
{'C': None, 'B': None, 'A': None}
ফাংশন স্পষ্টভাবে তার নিজস্ব শ্রেণি জানে, ফাংশনটি ক্লাসটি ফাংশনের আউটপুটকে প্রভাবিত করতে ব্যবহার করে এবং এটি পুনরাবৃত্তিযোগ্য থেকে শ্রেণীর একটি নতুন তৈরি করে। অর্ডারডটিক্ট একই পদ্ধতি ব্যবহার করার সময় এটি প্রদর্শিত করে:
>>> from collections import OrderedDict
>>> OrderedDict.fromkeys('ABC')
OrderedDict([('A', None), ('B', None), ('C', None)])
শ্রেণীর পদ্ধতিটি ক্লাস সম্পর্কে তথ্য ব্যবহার করে (এবং সেই শ্রেণীর উদাহরণ নয়) কী ধরণের ক্লাসটি ফিরে আসবে তা প্রভাবিত করতে।
স্থির পদ্ধতি
আপনি এমন একটি পদ্ধতি উল্লেখ করেছেন যা "এর শ্রেণিটি জানে না" - এটি পাইথনের একটি স্থির পদ্ধতি। এটি কেবল শ্রেণীর অবজেক্টের সুবিধার জন্য সংযুক্ত attached এটি অন্য মডিউলে optionচ্ছিকভাবে পৃথক ফাংশন হতে পারে তবে এর কল স্বাক্ষর একই হবে।
একটি স্থিতিশীল পদ্ধতি হ'ল শ্রেণি বা অবজেক্টের একটির কাজ।
স্ট্যাটিক পদ্ধতির অন্তর্নির্মিত উদাহরণটি পাইথন 3 এর স্ট্রিমার মার্কেট্রান্স।
>>> str.maketrans('abc', 'bca')
{97: 98, 98: 99, 99: 97}
বেশ কয়েকটি যুক্তি দেওয়া, এটি একটি অভিধান তৈরি করে যা এটির শ্রেণীর কোনও কাজ নয়।
এটি সুবিধাজনক কারণ str
সর্বদা বিশ্বব্যাপী নেমস্পেসে উপলভ্য, তাই আপনি সহজেই এটি অনুবাদ ফাংশন দিয়ে ব্যবহার করতে পারেন:
>>> 'abracadabra'.translate(str.maketrans('abc', 'bca'))
'bcrbabdbcrb'
পাইথন 2 এ, আপনাকে এটি string
মডিউল থেকে অ্যাক্সেস করতে হবে :
>>> 'abracadabra'.translate(str.maketrans('abc', 'bca'))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: type object 'str' has no attribute 'maketrans'
>>> import string
>>> 'abracadabra'.translate(string.maketrans('abc', 'bca'))
'bcrbabdbcrb'
উদাহরণ
class AClass(object):
"""In Python, a class may have several types of methods:
instance methods, class methods, and static methods
"""
def an_instance_method(self, x, y, z=None):
"""this is a function of the instance of the object
self is the object's instance
"""
return self.a_class_method(x, y)
@classmethod
def a_class_method(cls, x, y, z=None):
"""this is a function of the class of the object
cls is the object's class
"""
return cls.a_static_method(x, y, z=z)
@staticmethod
def a_static_method(x, y, z=None):
"""this is neither a function of the instance or class to
which it is attached
"""
return x, y, z
আসুন তাত্ক্ষণিকভাবে:
>>> instance = AClass()
এখন উদাহরণটি সমস্ত পদ্ধতিতে কল করতে পারে:
>>> instance.an_instance_method('x', 'y')
('x', 'y', None)
>>> instance.a_static_method('x', 'y')
('x', 'y', None)
>>> instance.a_class_method('x', 'y')
('x', 'y', None)
তবে ক্লাসটি সাধারণত উদাহরণ পদ্ধতিটি কল করার উদ্দেশ্যে নয়, যদিও এটি অন্যদের কল করার আশা করা হয়:
>>> AClass.a_class_method('x', 'y')
('x', 'y', None)
>>> AClass.a_static_method('x', 'y')
('x', 'y', None)
>>> AClass.an_instance_method('x', 'y')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: an_instance_method() missing 1 required positional argument: 'y'
উদাহরণ পদ্ধতিটি কল করতে আপনাকে স্পষ্টভাবে উদাহরণটি পাস করতে হবে:
>>> AClass.an_instance_method(instance, 'x', 'y')
('x', 'y', None)