আমি এমন কোনও সংস্থান খুঁজছি যা পাইথন ব্যবহার করে সেরা অভ্যাস, নকশার নিদর্শন এবং সলড নীতিগুলির উদাহরণ দেয়।
আমি এমন কোনও সংস্থান খুঁজছি যা পাইথন ব্যবহার করে সেরা অভ্যাস, নকশার নিদর্শন এবং সলড নীতিগুলির উদাহরণ দেয়।
উত্তর:
এর মধ্যে কিছু ওভারল্যাপ হয়
পাইথনে ইন্টারমিডিয়েট এবং অ্যাডভান্সড সফটওয়্যার কার্পেন্ট্রি
পাইথনিস্টের মতো কোড: আইডোমেটিক পাইথন
গুগল বিকাশকারী দিবস মার্কিন - পাইথন ডিজাইন প্যাটার্নস
আর একটি সংস্থান পাইথন রেসিপিগুলিতে উদাহরণস্বরূপ । একটি ভাল নম্বর সেরা অভ্যাস অনুসরণ করে না তবে আপনি সেখানে কিছু নিদর্শন খুঁজে পেতে পারেন
ব্রুস একেলের " থিংকিং ইন পাইথন " ডিজাইন প্যাটার্নগুলিতে প্রচুর ঝুঁকছে
আপনি এখানে এবং এখানে শুরু করতে পারেন ।
ডিজাইন প্যাটারদের আরও গভীরতার জন্য আপনার ডিজাইন প্যাটার্নগুলি: পুনরায় ব্যবহারযোগ্য অবজেক্ট-ওরিয়েন্টড সফ্টওয়্যার এর উপাদানসমূহের দিকে নজর দেওয়া উচিত । উত্স কোডটি পাইথনে নেই, তবে নিদর্শনগুলি বোঝার জন্য এটির দরকার নেই।
আপনার কোডটি সরল করার জন্য আপনি যে জিনিসটি ব্যবহার করতে পারেন সেগুলিতে অ্যাট্রিবিউটগুলি কল করতে বা অস্তিত্ব থাকতে পারে না তা হ'ল নাল অবজেক্ট ডিজাইন প্যাটার্ন (যার সাথে পাইথন কুকবুকে আমার পরিচয় হয়েছিল ) ব্যবহার করা।
মোটামুটিভাবে, নুল অবজেক্টগুলির সাথে লক্ষ্য হ'ল পাইথন বা নুল (বা নুল পয়েন্টার) এ অন্য ভাষায় প্রায়শই ব্যবহৃত আদিম ডেটা টাইপের জন্য 'বুদ্ধিমান' প্রতিস্থাপন সরবরাহ করা। এগুলি গুরুত্বপূর্ণ ক্ষেত্রে সহ অনেকগুলি উদ্দেশ্যে ব্যবহৃত হয় যেখানে অন্য কোনও ধরণের অনুরূপ উপাদানগুলির একটি সদস্য যে কারণেই বিশেষ। প্রায়শই এটি সাধারণ উপাদান এবং আদিম নাল মানের মধ্যে পার্থক্য করতে শর্তাধীন বিবৃতিতে ফলাফল দেয়।
এই অবজেক্টটি কেবল অ্যাট্রিবিউট ত্রুটির অভাব খায় এবং আপনি তাদের অস্তিত্বের জন্য পরীক্ষা করা এড়াতে পারেন।
এটি ছাড়া আর কিছুই নয়
class Null(object):
def __init__(self, *args, **kwargs):
"Ignore parameters."
return None
def __call__(self, *args, **kwargs):
"Ignore method calls."
return self
def __getattr__(self, mname):
"Ignore attribute requests."
return self
def __setattr__(self, name, value):
"Ignore attribute setting."
return self
def __delattr__(self, name):
"Ignore deleting attributes."
return self
def __repr__(self):
"Return a string representation."
return "<Null>"
def __str__(self):
"Convert to a string and return it."
return "Null"
এই সঙ্গে, যদি আপনি না Null("any", "params", "you", "want").attribute_that_doesnt_exists()
এটা বিস্ফোরিত করা হবে না, কিন্তু শুধু চুপটি সমতুল্য হয়ে pass
।
সাধারণত আপনি যেমন কিছু করতে চান
if obj.attr:
obj.attr()
এটি দিয়ে আপনি কেবল এটি করেন:
obj.attr()
এবং এটি সম্পর্কে ভুলে যাও সাবধান হন যে Null
অবজেক্টের ব্যাপক ব্যবহার আপনার কোডগুলিতে সম্ভাব্যভাবে বাগগুলি আড়াল করতে পারে।
আপনি এই নিবন্ধটি পড়ার ইচ্ছাও করতে পারেন (.pdf ফাইলটি নির্বাচন করুন), যা গতিশীল অবজেক্ট ওরিয়েন্টেড ভাষায় ডিজাইন প্যাটার্নগুলি (যেমন পাইথন) নিয়ে আলোচনা করে। পৃষ্ঠাটি উদ্ধৃত করতে:
এই কাগজটি অনুসন্ধান করে যে কীভাবে "গ্যাং অফ ফোর" বা "জিওএফ" বইয়ের নিদর্শনগুলি প্রদর্শিত হয়, যখন এটি প্রায়শই বলা হয়, যখন ডায়নামিক, উচ্চ-অর্ডার, অবজেক্ট-ভিত্তিক প্রোগ্রামিং ভাষা ব্যবহার করে অনুরূপ সমস্যাগুলি মোকাবেলা করা হয়। কিছু নিদর্শন অদৃশ্য হয়ে যায় - এটি হ'ল এগুলি সরাসরি ভাষার বৈশিষ্ট্য দ্বারা সমর্থিত হয়, কিছু নিদর্শনগুলি সহজতর হয় বা আলাদা ফোকাস থাকে এবং কিছুগুলি মূলত অপরিবর্তিত থাকে।