Вот что называется staticmethod
:
class A(object):
@staticmethod
def my_method(a, b, c):
return a, b, c
Однако в статических методах вы не получите ссылку на self
.
Если вам нужна ссылка на class
, а не instance
(экземпляр подразумевает ссылку на self
), вы можете использовать метод класса:
class A(object):
classvar = "var"
@classmethod
def my_method(cls, a, b, c):
print cls.classvar
return a, b, c
Но вы получите доступ только к переменным класса, а не к переменным экземпляра (которые обычно создаются / определяются внутри конструктора __init__
).
Если этого недостаточно, вам нужно каким-то образом передать «связанный» метод или передать «я» в метод следующим образом:
class A(object):
def my_method(self):
# use self and manipulate the object
inst = A()
A.my_method(inst)
Как уже говорили некоторые люди, неплохо просто наследовать один класс от другого:
class A(object):
... methods ...
class B(A):
def my_method(self):
... use self
newA = B()