Можете ли вы передать класс (не объект) в качестве параметра для метода в Python? - PullRequest
6 голосов
/ 12 мая 2009

Я хочу сделать что-то вроде следующего

class A:
  def static_method_A():
    print "hello"

def main(param=A):
  param.static_method_A()

Я хочу, чтобы это было эквивалентно A.static_method(). Возможно ли это?

Ответы [ 3 ]

8 голосов
/ 12 мая 2009

Конечно. Классы являются первоклассными объектами в Python.

Хотя в вашем примере вы должны использовать @classmethod (объект класса в качестве начального аргумента) или @staticmethod (без начального аргумента) для вашего метода.

5 голосов
/ 12 мая 2009

Вы должны быть в состоянии сделать следующее (обратите внимание на @staticmethod декоратор):

class A:
  @staticmethod
  def static_method_A():
    print "hello"
def main(param=A):
  param.static_method_A()
0 голосов
/ 12 мая 2009

Конечно, почему нет? Не забудьте добавить @staticmethod к статическим методам.

class A:
  @staticmethod
  def static_method_A():
    print "hello"

def main(param=A):
  param.static_method_A()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...