আমি সম্পূর্ণ সচেতন যে pylint
এবং অন্যান্য স্থিতিশীল বিশ্লেষণ সরঞ্জামগুলি সর্বজ্ঞাত নয় এবং কখনও কখনও তাদের পরামর্শ অমান্য করতে হবে। (এটি কেবলমাত্র convention
গুলি নয়, বিভিন্ন শ্রেণীর বার্তাগুলির জন্য প্রযোজ্য ))
আমার মত ক্লাস থাকলে
class related_methods():
def a_method(self):
self.stack.function(self.my_var)
class more_methods():
def b_method(self):
self.otherfunc()
class implement_methods(related_methods, more_methods):
def __init__(self):
self.stack = some()
self.my_var = other()
def otherfunc(self):
self.a_method()
স্পষ্টতই, এটি স্বীকৃত। আপনি যদি চান তবে এখানে আরও একটি ভাল উদাহরণ দেওয়া আছে ।
আমি বিশ্বাস করি যে এই স্টাইলটিকে "মিক্সিন" ব্যবহার করে ডাকা হয়।
অন্যান্য সরঞ্জাম মতো pylint
এ এই কোড হার -21.67 / 10
, প্রাথমিকভাবে কারণ এটি মনে more_methods
এবং related_methods
না self
বা বৈশিষ্ট্যাবলী otherfunc
, stack
, annd my_var
কারণ কোড চলমান ছাড়া, এটা আপাতদৃষ্টিতে দেখতে পারে না related_methods
এবং more_methods
মিশ্র-ইন করতে হয় implement_methods
।
সংকলক এবং স্থিতিশীল বিশ্লেষণ সরঞ্জামগুলি সর্বদা হোল্টিং সমস্যার সমাধান করতে পারে না , তবে আমি অনুভব করি এটি অবশ্যই একটি ক্ষেত্রে যার উত্তরাধিকার সূত্রে প্রাপ্ত বিষয়গুলি অনুসন্ধান করা implement_methods
একে পুরোপুরি বৈধ এবং এটি করার পক্ষে খুব সহজ জিনিস হবে thing
স্থির বিশ্লেষণ সরঞ্জামগুলি কেন এই বৈধ (আমার মনে হয়) ওওপি প্যাটার্নটিকে প্রত্যাখ্যান করে?
উভয় ক্ষেত্রেই:
এমনকি তারা উত্তরাধিকার পরীক্ষা করার চেষ্টা করে না বা
মিক্সিনগুলি মূর্খ, পাঠযোগ্য পাইথনগুলিতে নিরুৎসাহিত হয়
# 1 স্পষ্টতই ভুল কারণ আমি যদি pylint
আমার এমন এক শ্রেণীর সম্পর্কে বলতে বলি যা উত্তরাধিকার সূত্রে unittest.TestCase
ব্যবহার করে self.assertEqual
(কেবলমাত্র এতে সংজ্ঞায়িত কিছু হয় unittest.TestCase
) তবে এটি অভিযোগ করে না ।
মিশ্রণগুলি কি অযৌক্তিক বা নিরুৎসাহিত হয়?