python - "প্রথম শ্রেণীর" বস্তু কি কি?




language-agnostic (5)

যখন কোন বস্তু বা কিছু অন্য কোনও প্রোগ্রামিং ভাষাতে "প্রথম শ্রেণী" বলে এবং কেন? তারা যেখানে ভাষা থেকে পৃথক তারা কি না?

সম্পাদনা করুন। যখন কেউ বলে "সবকিছুই একটি বস্তু" (পাইথনের মতো), সে কি আসলেই বোঝায় যে "সবকিছুই প্রথম শ্রেণীর"?


Answers

"যখন কেউ বলে" সবকিছুই একটি বস্তু "(পাইথনের মতো), সে কি আসলেই বোঝায় যে" সবকিছুই প্রথম শ্রেণীর "?"

হ্যাঁ।

পাইথন সবকিছু একটি সঠিক বস্তু। এমন কিছু জিনিস যা অন্যান্য ভাষার মধ্যে "আদিম ধরনের"।

আপনি যে 2 মত একটি বস্তু আসলে একটি মোটামুটি সমৃদ্ধ এবং পরিশীলিত ইন্টারফেস আছে।

>>> dir(2)
['__abs__', '__add__', '__and__', '__class__', '__cmp__', '__coerce__', '__delattr__', '__div__', '__divmod__', '__doc__', '__float__', '__floordiv__', '__getattribute__', '__getnewargs__', '__hash__', '__hex__', '__index__', '__init__', '__int__', '__invert__', '__long__', '__lshift__', '__mod__', '__mul__', '__neg__', '__new__', '__nonzero__', '__oct__', '__or__', '__pos__', '__pow__', '__radd__', '__rand__', '__rdiv__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rlshift__', '__rmod__', '__rmul__', '__ror__', '__rpow__', '__rrshift__', '__rshift__', '__rsub__', '__rtruediv__', '__rxor__', '__setattr__', '__str__', '__sub__', '__truediv__', '__xor__']

কারণ পাইথনটিতে সবকিছুই প্রথম শ্রেণীর বস্তু, তুলনামূলকভাবে কয়েকটি অস্পষ্ট বিশেষ ক্ষেত্রে রয়েছে।

জাভাতে উদাহরণস্বরূপ, আদিম ধরনের (int, bool, double, char) আছে যা সঠিক বস্তু নয়। এজন্যই জাভাটিকে প্রথম শ্রেণির ধরন হিসাবে ইন্টিগার, বুলিয়ান, ডাবল এবং ক্যারেক্টার পরিচয় করিয়ে দিতে হবে। এটি নতুনদের কাছে শেখানো কঠিন হতে পারে - কেন কোন আদিম প্রকার এবং একটি শ্রেণির উভয় পাশাপাশি বিদ্যমান থাকতে হবে তা স্পষ্ট নয়।

এটি একটি অবজেক্টের ক্লাসও - মানে - একটি বস্তু। এটি C ++ থেকে ভিন্ন, যেখানে শ্রেণীগুলি সর্বদা রান-টাইম এ একটি স্বতন্ত্র অস্তিত্ব থাকে না।

2 type 'int' বস্তু, যার পদ্ধতি, গুণাবলী এবং একটি ধরন রয়েছে।

>>> type(2)
<type 'int'>

int মতো অন্তর্নির্মিত ধরনের type 'type' বস্তু। এই পদ্ধতি এবং গুণাবলী আছে, এছাড়াও।

>>> type(type(2))
<type 'type'>

স্ট্রাকচার অ্যান্ড ইন্টারপ্রেটেশন অফ কম্পিউটার প্রোগ্রামস , লিচার ২ এ (1986) একটি স্লাইড থেকে, যা ক্রিস্টোফার স্ট্রেসির উদ্ধৃতি দেয়:

প্রথম শ্রেণীর নাগরিক অধিকার ও অধিকার:

  • পরিবর্তনশীল দ্বারা নামকরণ করা হবে।
  • পদ্ধতির আর্গুমেন্ট হিসাবে পাস করা হবে।
  • পদ্ধতি মান হিসাবে ফিরে আসতে হবে।
  • তথ্য কাঠামো মধ্যে অন্তর্ভুক্ত করা হবে

সংক্ষেপে, এটি বস্তুর ব্যবহারের উপর কোন বিধিনিষেধ আছে মানে। এটা অন্য কোন বস্তুর মত একই।

একটি প্রথম শ্রেণীর বস্তু একটি সত্তা যা গতিশীলভাবে তৈরি, ধ্বংস করা, কোনও ফাংশনে প্রেরণ করা যায়, একটি মান হিসাবে ফেরত আনা যায় এবং প্রোগ্রামিং ভাষাতে অন্যান্য ভেরিয়েবলগুলির মতো সমস্ত অধিকার রয়েছে।

ভাষা উপর নির্ভর করে, এই ইঙ্গিত করতে পারেন:

  • একটি বেনামী আক্ষরিক মান হিসাবে expressible হচ্ছে
  • পরিবর্তনশীল মধ্যে স্থিতিশীল হচ্ছে
  • তথ্য কাঠামো মধ্যে স্থিতিশীল হচ্ছে
  • একটি অন্তর্নিহিত পরিচয় (কোন প্রদত্ত নাম থেকে স্বাধীন)
  • অন্যান্য সংস্থা সঙ্গে সমতা জন্য তুলনীয় হচ্ছে
  • একটি পদ্ধতি / ফাংশন একটি পরামিতি হিসাবে passable হচ্ছে
  • একটি পদ্ধতি / ফাংশন ফলাফল হিসাবে returnable হচ্ছে
  • রানটাইমে গঠনমূলক হচ্ছে
  • মুদ্রণযোগ্য হচ্ছে
  • পাঠযোগ্য হচ্ছে
  • বিতরণ প্রসেস মধ্যে transmissible হচ্ছে
  • চলমান প্রসেস বাইরে স্থিতিশীল হচ্ছে

Source

সি ++ ফাংশনগুলিতে নিজেদের প্রথম শ্রেণীর বস্তু নেই তবে:

  • আপনি '()' অপারেটরকে ওভাররাইড করতে পারেন যাতে এটি একটি বস্তুর ফাংশন থাকতে পারে, যা প্রথম শ্রেণী।
  • ফাংশন পয়েন্টার প্রথম শ্রেণীর হয়।
  • বদ্ধ বুদ, Lambda এবং ফাংশন প্রথম শ্রেণীর ফাংশন অফার

সি ++ তে, ক্লাসগুলি প্রথম শ্রেণীর বস্তু নয় তবে সেই ক্লাসের উদাহরণগুলি। পাইথন উভয় ক্লাস এবং বস্তু প্রথম শ্রেণীর বস্তু। (বস্তু হিসাবে ক্লাস সম্পর্কে আরও বিস্তারিত জানার জন্য এই উত্তরটি দেখুন)।

এখানে জাভাস্ক্রিপ্ট প্রথম শ্রেণীর ফাংশন একটি উদাহরণ:

// f: function that takes a number and returns a number
// deltaX: small positive number
// returns a function that is an approximate derivative of f
function makeDerivative( f, deltaX )
{
    var deriv = function(x)
    { 
       return ( f(x + deltaX) - f(x) )/ deltaX;
    }
    return deriv;
}
var cos = makeDerivative( Math.sin, 0.000001);
// cos(0)     ~> 1
// cos(pi/2)  ~> 0

Source

প্রথম শ্রেণীর বস্তুগুলি নয় এমন সংস্থাগুলিকে দ্বিতীয়-শ্রেণীর বস্তু হিসাবে উল্লেখ করা হয়। সি ++ এ কার্যাবলি দ্বিতীয় শ্রেণীর কারণ এটি গতিশীলভাবে তৈরি করা যাবে না।

সম্পাদনা সংক্রান্ত:

সম্পাদনা করুন। যখন কেউ বলে "সবকিছুই একটি বস্তু" (পাইথনের মতো), সে কি আসলেই বোঝায় যে "সবকিছুই প্রথম শ্রেণীর"?

শব্দটি বস্তুটি নিরপেক্ষভাবে ব্যবহার করা যেতে পারে এবং এটি প্রথম শ্রেণী হতে বোঝায় না। এবং সম্ভবত এটি সমগ্র ধারণাটিকে 'প্রথম শ্রেণীর সত্ত্বা' হিসাবে কল করার আরো অর্থ বয়ে আনবে। কিন্তু পাইথন তারা সবকিছু প্রথম শ্রেণী করতে লক্ষ্য রাখে। আমি বিশ্বাস করি যে আপনার বক্তব্যটি তৈরি করা ব্যক্তিটির উদ্দেশ্য প্রথম শ্রেণীর।


"ফার্স্ট ক্লাস" মানে আপনি তাদের স্বাভাবিকভাবেই পরিচালনা করতে পারেন। বেশীরভাগ সময়ে, এর অর্থ হল আপনি এই প্রথম-শ্রেণীর নাগরিকদের ফাংশনগুলিতে আর্গুমেন্ট হিসাবে পাস করতে পারেন, অথবা ফাংশন থেকে তাদের ফিরিয়ে আনতে পারেন।

এই বস্তুর জন্য স্ব-স্পষ্ট কিন্তু ফাংশন, এমনকি ক্লাস জন্য সবসময় তাই স্পষ্ট নয়:

void f(int n) { return n * 2; }

void g(Action<int> a, int n) { return a(n); }

// Now call g and pass f:

g(f, 10); // = 20

এটি C # এ একটি উদাহরণ যেখানে ফাংশন আসলে প্রথম-শ্রেণীর বস্তু নয়। একটি ক্রিয়া হিসাবে একটি ফাংশন পাস করার জন্য উপরের কোডটি একটি ছোট কার্যকারিতা (অর্থাৎ জেনারেল প্রতিনিধি Action<> ) ব্যবহার করে। রুবি হিসাবে অন্যান্য ভাষা, এমনকি স্বাভাবিক ভেরিয়েবল হিসাবে ক্লাস এবং কোড ব্লক চিকিত্সা (অথবা রুবি, সংহত ক্ষেত্রে)।


Substr () সাধারণত (অর্থাত্ পিএইচপি এবং পার্ল) এইভাবে কাজ করে:

s = Substr(s, beginning, LENGTH)

সুতরাং পরামিতি beginning এবং LENGTH

কিন্তু পাইথনের আচরণ ভিন্ন। এটি শুরু এবং END (এক) পরে এক আশা! এই beginners দ্বারা স্পট কঠিন। সুতরাং Substr (গুলি, শুরু, LENGTH) জন্য সঠিক প্রতিস্থাপন হয়

s = s[ beginning : beginning + LENGTH]




python language-agnostic