আমি যখন ক্লাসের বডি থেকে কোনও স্ট্যাটিক পদ্ধতি ব্যবহার করার চেষ্টা করি, এবং বিল্ট-ইন staticmethod
ফাংশনটি ডেকরেটর হিসাবে ব্যবহার করে স্থির পদ্ধতিটি সংজ্ঞায়িত করি :
class Klass(object):
@staticmethod # use as decorator
def _stat_func():
return 42
_ANS = _stat_func() # call the staticmethod
def method(self):
ret = Klass._stat_func() + Klass._ANS
return ret
আমি নিম্নলিখিত ত্রুটি পেয়েছি:
Traceback (most recent call last):<br>
File "call_staticmethod.py", line 1, in <module>
class Klass(object):
File "call_staticmethod.py", line 7, in Klass
_ANS = _stat_func()
TypeError: 'staticmethod' object is not callable
আমি বুঝতে পারি যে এটি কেন ঘটছে (বর্ণনাকারী বাঁধাই) , এবং _stat_func()
এর সর্বশেষ ব্যবহারের পরে ম্যানুয়ালি একটি স্ট্যাটিকমেথডে রূপান্তর করে এটির মতো কাজ করতে পারে:
class Klass(object):
def _stat_func():
return 42
_ANS = _stat_func() # use the non-staticmethod version
_stat_func = staticmethod(_stat_func) # convert function to a static method
def method(self):
ret = Klass._stat_func() + Klass._ANS
return ret
সুতরাং আমার প্রশ্নটি হ'ল:
ক্লিনার বা আরও বেশি "পাইথোনিক" এর মতো আরও ভাল, এটি সম্পন্ন করার উপায়গুলি কি?
staticmethod
করা উচিত নয়। এগুলি সাধারণত মডিউল স্তরের ফাংশন হিসাবে বেশি কার্যকর, এক্ষেত্রে আপনার সমস্যাটি কোনও সমস্যা নয়।classmethod
, অন্যদিকে ...