Đồng ý với @jolvi, @ArundasR và những người khác, cảnh báo xảy ra đối với chức năng thành viên không sử dụng self
.
Nếu bạn chắc chắn rằng PyCharm sai, thì chức năng đó không phải là một @staticmethod
và nếu bạn coi trọng các cảnh báo bằng 0, bạn có thể khiến điều này biến mất theo hai cách khác nhau:
Giải pháp số 1
def bar(self):
self.is_not_used()
doing_something_without_self()
def is_not_used(self):
pass
Giải pháp số 2 [Cảm ơn @ DavidPärsson ]
# noinspection PyMethodMayBeStatic
def bar(self):
doing_something_without_self()
Ứng dụng tôi có cho việc này (lý do tôi không thể sử dụng @staticmethod) là trong việc tạo một bảng các hàm xử lý để đáp ứng với trường con giao thức. Tất cả các trình xử lý phải là cùng một dạng của khóa học (tĩnh hoặc không tĩnh). Nhưng một số đã không xảy ra để làm bất cứ điều gì với ví dụ. Nếu tôi tạo các tĩnh đó, tôi sẽ nhận được đối tượng "TypeError: 'staticmethod' không thể gọi được".
Để hỗ trợ cho bản dựng của OP, đề nghị bạn thêm tĩnh bất cứ khi nào bạn có thể, đi ngược lại với nguyên tắc là làm cho mã ít bị hạn chế hơn về sau, hơn là làm cho nó trở nên tĩnh hơn - làm cho phương thức tĩnh trở nên hạn chế hơn, vì bạn có thể gọi class.f () thay vì instance.f ().
Đoán xem tại sao cảnh báo này tồn tại:
- Nó quảng cáo tĩnh . Nó làm cho các nhà phát triển nhận thức được một cái gì đó họ có thể có ý định.
- Như @ JohnWorrall chỉ ra, nó thu hút sự chú ý của bạn khi bản thân vô tình rời khỏi chức năng.
- Đó là một gợi ý để suy nghĩ lại về mô hình đối tượng; có lẽ chức năng này không thuộc về lớp này.
self
bất cứ nơi nào trong phương pháp? (Nếu câu hỏi thực sự là "tại sao các nhà thiết kế của PyCharm lại thiết kế theo cách này ... bạn sẽ phải hỏi họ chứ không phải SO ...)