У меня есть класс, который в принципе несет всю информацию о нем в своем теле класса. При создании экземпляра он получает дополнительную информацию, которая вместе с атрибутами класса образует обычный экземпляр. Теперь моя проблема заключается в том, что мне нужно реализовать метод, который должен вызываться как метод класса, когда он вызывается из объекта класса, но должен вызываться как обычный метод экземпляра при вызове из экземпляра:
например что-то типа
class MyClass(object):
attribs = 1, 2, 3
def myMethod(self, args):
if isclass(self):
"do class stuff"
else:
"do instance stuff"
MyClass.myMethod(2) #should now be called as a class method, e.g. I would normally do @classmethod
MyClass().myMethod(2) #should now be called as instance method
Конечно, я мог бы объявить его как статический метод и явно передать либо экземпляр, либо объект класса, но это кажется довольно непитоновским и недружественным для пользователя.
classmethod
), назначение методов класса и обычных методов обычно сильно различается. Тщательно подумайте, не перевешивает ли простота вызова одного унифицированного метода простоту понимания того, что делает каждый отдельный метод. - person MisterMiyagi   schedule 24.12.2019