কনস্ট্রাক্টর, এবং অ্যাসাইনমেন্ট এবং পদ্ধতি কলগুলির ক্ষেত্রে, পাইকার্ম আইডিই আমার উত্স কোডটি বিশ্লেষণ করতে এবং প্রতিটি ভেরিয়েবলটি কী প্রকারের হবে তা নির্ধারণে বেশ ভাল। আমি যখন এটি সঠিক তা পছন্দ করি, কারণ এটি আমাকে ভাল কোড-সমাপ্তি এবং পরামিতি সম্পর্কিত তথ্য দেয় এবং যদি অস্তিত্ব নেই এমন একটি বৈশিষ্ট্য অ্যাক্সেস করার চেষ্টা করি তবে এটি আমাকে সতর্কতা দেয়।
কিন্তু যখন এটি পরামিতি আসে, এটি কিছুই জানে না। কোড-সমাপ্তির ড্রপডাউনগুলি কোনও কিছুই প্রদর্শন করতে পারে না, কারণ তারা জানে না যে পরামিতিটি কী প্রকার হবে। কোড বিশ্লেষণ সতর্কতা সন্ধান করতে পারে না।
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
peasant = Person("Dennis", 37)
# PyCharm knows that the "peasant" variable is of type Person
peasant.dig_filth() # shows warning -- Person doesn't have a dig_filth method
class King:
def repress(self, peasant):
# PyCharm has no idea what type the "peasant" parameter should be
peasant.knock_over() # no warning even though knock_over doesn't exist
King().repress(peasant)
# Even if I call the method once with a Person instance, PyCharm doesn't
# consider that to mean that the "peasant" parameter should always be a Person
এটি একটি নির্দিষ্ট পরিমাণে বোধ তৈরি করে। অন্যান্য কল সাইটগুলি এই পরামিতিটির জন্য কিছু পাস করতে পারে। তবে আমার পদ্ধতিটি যদি কোনও প্যারামিটারটি টাইপ হওয়ার প্রত্যাশা করে, তবে বলুন, pygame.Surface
আমি পাইকার্মে এটি কোনওভাবে নির্দেশ করতে সক্ষম হতে চাই, সুতরাং এটি Surface
কোড-সমাপ্তি ড্রপডাউনটিতে আমাকে সমস্ত বৈশিষ্ট্যগুলি দেখাতে পারে এবং সতর্কতা হাইলাইট করে যদি আমি ভুল পদ্ধতি কল, ইত্যাদি।
আমি পাইচার্মকে একটি ইঙ্গিত দিতে এবং "পিএসএস্ট, এই প্যারামিটারটি এক্স টাইপের বলে মনে করা যেতে পারে"? (বা সম্ভবত, গতিশীল ভাষার চেতনায়, "এই প্যারামিটারটি এক্স এর মতো ভঙ্গ হবে"? আমি সে সাথে ভাল থাকব))
সম্পাদনা: ক্রেজি কোডারের উত্তর নীচে, কৌশলটি করে। আমার মতো নতুনদের যারা দ্রুত সংক্ষিপ্তসার চান, তাদের জন্য এটি এখানে:
class King:
def repress(self, peasant):
"""
Exploit the workers by hanging on to outdated imperialist dogma which
perpetuates the economic and social differences in our society.
@type peasant: Person
@param peasant: Person to repress.
"""
peasant.knock_over() # Shows a warning. And there was much rejoicing.
প্রাসঙ্গিক অংশটি @type peasant: Person
ডকস্ট্রিংয়ের লাইন।
আপনি যদি ফাইল> সেটিংস> পাইথন ইন্টিগ্রেটেড সরঞ্জামগুলিতে যান এবং "ডকস্ট্রিং ফর্ম্যাট "টিকে" এপিটেক্সট "তে সেট করেন তবে পাইচার্মের ভিউ> কুইক ডকুমেন্টেশন লুকআপ কেবলমাত্র সমস্ত @-লাইনগুলি যেমন প্রিন্ট করা হবে তার পরিবর্তে প্যারামিটারের তথ্যগুলি প্রিন্ট করবে।
@param xx: yyy
হয়ে যায়:param xx: yyy
। দেখুন jetbrains.com/pycharm/webhelp/...