เห็นด้วยกับ @jolvi, @ArundasR และอื่น ๆ self
เตือนที่เกิดขึ้นในฟังก์ชันสมาชิกที่ไม่ได้ใช้
หากคุณแน่ใจว่า PyCharm ผิดฟังก์ชั่นนั้นไม่ควรเป็น@staticmethod
และหากคุณให้คุณค่ากับคำเตือนที่เป็นศูนย์คุณสามารถทำให้สิ่งนี้หายไปได้สองวิธี:
วิธีแก้ปัญหา # 1
def bar(self):
self.is_not_used()
doing_something_without_self()
def is_not_used(self):
pass
วิธีแก้ปัญหา # 2 [ขอบคุณ@ DavidPärsson ]
# noinspection PyMethodMayBeStatic
def bar(self):
doing_something_without_self()
แอปพลิเคชันที่ฉันมีสำหรับสิ่งนี้ (เหตุผลที่ฉันไม่สามารถใช้ @staticmethod) กำลังสร้างตารางฟังก์ชันตัวจัดการสำหรับการตอบสนองต่อฟิลด์ย่อยของโปรโตคอล ตัวจัดการทั้งหมดจะต้องเป็นรูปแบบเดียวกันของหลักสูตร (แบบคงที่หรือแบบคงที่) แต่บางคนก็ไม่ได้ทำอะไรกับอินสแตนซ์ ถ้าฉันทำแบบคงที่ฉันจะได้รับ "TypeError: 'staticmethod' เป็นวัตถุที่ไม่สามารถเรียกได้"
ในการสนับสนุนการตกตะลึงของ OP แนะนำให้คุณเพิ่มวิธีการคงที่ทุกครั้งที่คุณทำได้ขัดกับหลักการที่ทำให้การ จำกัด รหัสในภายหลังง่ายกว่าการทำเพิ่มเติม - การทำวิธีการแบบคงที่ทำให้ข้อ จำกัด น้อยลงในตอนนี้ เรียก class.f () แทน instance.f ()
คาดเดาสาเหตุที่มีคำเตือนนี้:
- มันโฆษณาวิธีการคงที่ ทำให้นักพัฒนาตระหนักถึงสิ่งที่พวกเขาอาจตั้งใจไว้
- ในฐานะที่เป็น @ คะแนนจาก JohnWorrall ของมันได้รับความสนใจของคุณเมื่อตัวเองถูกทิ้งไว้โดยไม่ได้ตั้งใจออกของฟังก์ชัน
- มันเป็นคิวที่คิดใหม่โมเดลวัตถุ บางทีฟังก์ชั่นไม่ได้อยู่ในคลาสนี้เลย
self
ที่ใดก็ได้ภายในวิธีการหรือไม่ (ถ้าคำถามจริงๆคือ "ทำไมนักออกแบบของ PyCharm จึงออกแบบมันด้วยวิธีนี้ ... คุณจะต้องถามพวกเขาไม่ใช่ SO ... )