Я столкнулся с этим, когда я вызывал некоторые методы класса (которые должны быть методами класса, чтобы у меня все еще была ссылка на класс) из метода, не относящегося к классу, как показано ниже.
class A:
def a(self, number):
print("a", self, number)
self.b(number)
@classmethod
def b(cls, number):
print("b", cls, number + 1)
cls.c(number)
@classmethod
def c(cls, number):
print("c", cls, number * 2)
b = A()
b.a(3)
Приведенный выше код дает следующий результат:
a <__main__.A object at 0x000001FAC09FE358> 3
b <class '__main__.A'> 4
c <class '__main__.A'> 6
Я не говорю, что это лучшее соглашение, но оно ничего не нарушает в Python 3.6