অজগর নকশা নিদর্শন [বন্ধ]


166

আমি এমন কোনও সংস্থান খুঁজছি যা পাইথন ব্যবহার করে সেরা অভ্যাস, নকশার নিদর্শন এবং সলড নীতিগুলির উদাহরণ দেয়।



উত্তর:


152

এর মধ্যে কিছু ওভারল্যাপ হয়

পাইথনে ইন্টারমিডিয়েট এবং অ্যাডভান্সড সফটওয়্যার কার্পেন্ট্রি

পাইথনিস্টের মতো কোড: আইডোমেটিক পাইথন

পাইথন আইডিয়ামস এবং দক্ষতা

গুগল বিকাশকারী দিবস মার্কিন - পাইথন ডিজাইন প্যাটার্নস

আর একটি সংস্থান পাইথন রেসিপিগুলিতে উদাহরণস্বরূপ । একটি ভাল নম্বর সেরা অভ্যাস অনুসরণ করে না তবে আপনি সেখানে কিছু নিদর্শন খুঁজে পেতে পারেন


1
তৃতীয় লিঙ্কটি মারা গেছে। আয়না সন্ধান করার চেষ্টা
করেও

1
এখানেও পাইথন আইডিয়ামস এবং দক্ষতা কাজ করে বলে মনে হচ্ছে না।
দাউদ লাসুকুক

প্রথম এবং দ্বিতীয় লিঙ্কগুলি মারা গিয়েছিল তাই আমি তাদের ইন্টারনেট আর্কাইভ স্ন্যাপশটগুলির সাথে আপডেট করেছি। এগুলি যদিও খুব পুরানো বলে মনে হচ্ছে, যদিও আমি নিশ্চিত যে এটির অনেকগুলি এখনও প্রাসঙ্গিক।
মানিক্যারি

24

আদর্শ

>>> import this

পাইথন কনসোলে

যদিও এটি সাধারণত (সূক্ষ্ম!) রসিক হিসাবে বিবেচিত হয়, তবে এটিতে বেশ কয়েকটি বৈধ অজগর-নির্দিষ্ট অ্যাকসিম রয়েছে।


13

ব্রুস একেলের " থিংকিং ইন পাইথন " ডিজাইন প্যাটার্নগুলিতে প্রচুর ঝুঁকছে


2
নোট করুন যে উইকি অনুসারে এই বইটি আর রক্ষণাবেক্ষণ করা হয় না।
সাকিস্ক

আপডেট লিংক [অজগর সম্পর্কে চিন্তাভাবনা] ( mindview.net/Books/Python/ThinkingInPython.html )
বর্ধিত 10

6

আপনি এখানে এবং এখানে শুরু করতে পারেন ।

ডিজাইন প্যাটারদের আরও গভীরতার জন্য আপনার ডিজাইন প্যাটার্নগুলি: পুনরায় ব্যবহারযোগ্য অবজেক্ট-ওরিয়েন্টড সফ্টওয়্যার এর উপাদানসমূহের দিকে নজর দেওয়া উচিত । উত্স কোডটি পাইথনে নেই, তবে নিদর্শনগুলি বোঝার জন্য এটির দরকার নেই।


8
আমি মনে করি যে ডিজাইনের নিদর্শনগুলি বাস্তবায়নের জন্য আইডিয়োম্যাটিক অজগরটি কীভাবে ব্যবহার করবেন তা বোঝা গুরুত্বপূর্ণ। এটি সি ++ এর চেয়ে একেবারেই আলাদা ভাষা যা জিওএফ-তে ব্যবহৃত হয় সুতরাং সি ++ থেকে পাইথন পর্যন্ত পোর্টিংয়ের ফলে পাইথোনিক কোড নষ্ট হবে।
সাকিস্ক

1
আমি দ্বিমত পোষণ করি পাইগন, জাভা, বা সি ++ হউক, যে কোনও ওও ভাষায় সিঙ্গলটন ডিপি বা অন্যান্য ডিপি সম্ভব হবে। আপনার মতে পাইথোনিক কী?
পল হিমস্ট্র্রা

1
প্রথম লিঙ্কটি মোটামুটি দুর্বল কাগজ, পাইথন সম্পর্কে অনেক ভুল ধারণা রয়েছে। দ্বিতীয়টি বর্তমানে ৪৪৪ এর দশকে, সুতরাং আমি মনে করি, এর চেয়ে কম ক্ষতি করছে :)
ব্র্যান্ডন রোডস

6

আপনার কোডটি সরল করার জন্য আপনি যে জিনিসটি ব্যবহার করতে পারেন সেগুলিতে অ্যাট্রিবিউটগুলি কল করতে বা অস্তিত্ব থাকতে পারে না তা হ'ল নাল অবজেক্ট ডিজাইন প্যাটার্ন (যার সাথে পাইথন কুকবুকে আমার পরিচয় হয়েছিল ) ব্যবহার করা।

মোটামুটিভাবে, নুল অবজেক্টগুলির সাথে লক্ষ্য হ'ল পাইথন বা নুল (বা নুল পয়েন্টার) এ অন্য ভাষায় প্রায়শই ব্যবহৃত আদিম ডেটা টাইপের জন্য 'বুদ্ধিমান' প্রতিস্থাপন সরবরাহ করা। এগুলি গুরুত্বপূর্ণ ক্ষেত্রে সহ অনেকগুলি উদ্দেশ্যে ব্যবহৃত হয় যেখানে অন্য কোনও ধরণের অনুরূপ উপাদানগুলির একটি সদস্য যে কারণেই বিশেষ। প্রায়শই এটি সাধারণ উপাদান এবং আদিম নাল মানের মধ্যে পার্থক্য করতে শর্তাধীন বিবৃতিতে ফলাফল দেয়।

এই অবজেক্টটি কেবল অ্যাট্রিবিউট ত্রুটির অভাব খায় এবং আপনি তাদের অস্তিত্বের জন্য পরীক্ষা করা এড়াতে পারেন।

এটি ছাড়া আর কিছুই নয়

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অবজেক্টের ব্যাপক ব্যবহার আপনার কোডগুলিতে সম্ভাব্যভাবে বাগগুলি আড়াল করতে পারে।


3

আপনি এই নিবন্ধটি পড়ার ইচ্ছাও করতে পারেন (.pdf ফাইলটি নির্বাচন করুন), যা গতিশীল অবজেক্ট ওরিয়েন্টেড ভাষায় ডিজাইন প্যাটার্নগুলি (যেমন পাইথন) নিয়ে আলোচনা করে। পৃষ্ঠাটি উদ্ধৃত করতে:

এই কাগজটি অনুসন্ধান করে যে কীভাবে "গ্যাং অফ ফোর" বা "জিওএফ" বইয়ের নিদর্শনগুলি প্রদর্শিত হয়, যখন এটি প্রায়শই বলা হয়, যখন ডায়নামিক, উচ্চ-অর্ডার, অবজেক্ট-ভিত্তিক প্রোগ্রামিং ভাষা ব্যবহার করে অনুরূপ সমস্যাগুলি মোকাবেলা করা হয়। কিছু নিদর্শন অদৃশ্য হয়ে যায় - এটি হ'ল এগুলি সরাসরি ভাষার বৈশিষ্ট্য দ্বারা সমর্থিত হয়, কিছু নিদর্শনগুলি সহজতর হয় বা আলাদা ফোকাস থাকে এবং কিছুগুলি মূলত অপরিবর্তিত থাকে।


1
প্রশ্নটি পাইথন সম্পর্কে ছিল; কাগজটি স্কিম-জাতীয় ভাষার বিষয়ে কথা বলে যা আমি বলতে পারি যা থেকে এই নির্দিষ্ট কাগজের জন্য অন স্পট উদ্ভাবিত হয়েছিল। যদি প্রশ্নকর্তা (ক) পাইথন অনুশীলনগুলির সাথে দীর্ঘকালীন অভিজ্ঞতার সাথে একাডেমিক কম্পিউটার বিজ্ঞানী না হন তবে আমি সন্দেহ করি যে তারা যদি কাগজটির বাইরে মূল্যবোধের কিছু অর্জন করতে পারে - এবং আরও বেশি কথা, তারা সম্ভবত এই প্রশ্নটি জিজ্ঞাসা না করতেন প্রথম অবস্থানে. :)
ব্র্যান্ডন রোডস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.