Ответ 1
Я уверен, что это невозможно для статического метода. Вместо этого используйте метод класса:
class Snake(object):
@classmethod
def my_name(cls):
print cls.__name__
как получить имя класса внутри статического метода, у меня есть наследование и хотите, чтобы имя производного класса
В следующем примере, что должно быть там вместо XXX в методе my_name()
class snake()
@staticmethod
def my_name():
print XXX.__name___
class python (snake)
pass
class cobra (snake)
pass
python.my_name()
# I want output to be python
cobra.my_name()
# I want output to be cobra
Я уверен, что это невозможно для статического метода. Вместо этого используйте метод класса:
class Snake(object):
@classmethod
def my_name(cls):
print cls.__name__
Статический метод в Python для всех целей и задач - только функция. Он ничего не знает о классе, поэтому вы не должны этого делать. Вероятно, это возможно, большинство вещей имеют тенденцию быть. Но это неправильно.:)
И в этом случае вы явно заботитесь о классе, поэтому вам не нужен статический метод. Поэтому используйте метод класса.
ключевое слово self дает класс с помощью метода в нем. Поэтому имя можно найти, используя self.__name__
Если вы хотите получить родительский класс, вам нужно передать его классу каким-либо методом, например, методом __init__
.
class example():
def __init__(self,parent):
self.parent = parent
def printit(self):
print self.__name__
print self.parent.__name__
Также вы должны включить self как первый аргумент методов класса. Это соглашение python, которое позволяет вам обращаться к переменным класса с помощью self.
Кроме того, вы должны просто иметь доступ к имени, используя python.__name__