Python: Утверждайте, что переменная является методом экземпляра?

Вы можете получить доступ к параметрам параметров одного значения с помощью ${param}.

<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
...


...



...

Обратите внимание, что JSTL fn:escapeXml() необходим для предотвращения атак XSS. См. Также Предотвращение XSS в веб-приложении JSP / Servlet .

Вы можете получить доступ к параметрам запроса с несколькими значениями с помощью потоков ${paramValues} и EL 3.0.

v == 'a').get() ? 'checked' : ''} />
v == 'b').get() ? 'checked' : ''} />
v == 'c').get() ? 'checked' : ''} />
...

27
задан quano 11 August 2009 в 12:10
поделиться

2 ответа

inspect.ismethod - это то, что вы хотите узнать, действительно ли у вас есть метод, а не просто то, что вы можете вызвать.

import inspect

def foo(): pass

class Test(object):
    def method(self): pass

print inspect.ismethod(foo) # False
print inspect.ismethod(Test) # False
print inspect.ismethod(Test.method) # True
print inspect.ismethod(Test().method) # True

print callable(foo) # True
print callable(Test) # True
print callable(Test.method) # True
print callable(Test().method) # True

callable истинно, если аргумент если аргумент - это метод, функция (включая лямбда s), экземпляр с __ call __ или класс.

Свойства методов отличаются от свойств (например, im_class и im_self ). Итак, вы хотите

assert inspect.ismethod(Test().method)  
45
ответ дан 28 November 2019 в 05:03
поделиться

Если вы хотите узнать, является ли это точно методом экземпляра, используйте следующую функцию. (Он рассматривает методы, которые определены в метаклассе и доступны для методов класса, хотя их также можно рассматривать как методы экземпляра)

import types
def is_instance_method(obj):
    """Checks if an object is a bound method on an instance."""
    if not isinstance(obj, types.MethodType):
        return False # Not a method
    if obj.im_self is None:
        return False # Method is not bound
    if issubclass(obj.im_class, type) or obj.im_class is types.ClassType:
        return False # Method is a classmethod
    return True

Обычно проверка на это плохая идея. Более гибкий способ использовать любые callable () взаимозаменяемо с методами.

8
ответ дан Ants Aasma 14 October 2019 в 13:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: