필자에게는 getter 및 setter 메서드가있는 모델 클래스와 때로는 정적 메서드가 있습니다. 유니 코드 문자열을 특정 메서드에 대한 인수로 사용하고 데코레이터를 사용하는 것이 처음 생각이었습니다. 지금은 이런 일이 : 인해 잘못된 인수 개수에메서드에 유니 코드 인수를 적용하는 방법은 무엇입니까?
import types
class require_unicode(object):
def __init__(self, function):
self.f = function
def __call__(self, string):
if not isinstance(string, types.UnicodeType):
raise ValueError('String is not unicode')
return self.f(string)
class Foo(object):
something = 'bar'
@staticmethod
@require_unicode
def do_another(self, string):
return ' '.join(['baz', string])
@require_unicode
def set_something(self, string):
self.something = string
foo = Foo()
foo.set_something('ValueError is raised')
foo.set_something(u'argument count error')
foo.do_another('ValueError is raised')
foo.do_another(u'argument count error')
위의 코드에서 장식의 __call__
실패 내부의 메소드 호출을합니다 ('foo는'객체 심판이 없기 때문에?). 바보 같은 짓하기 전에 나는 너희들에게 물어보고 싶었다. 어떻게해야합니까?
나는 그것이 unpythonic이지만 인코딩 된 문자열을 방지하면 나중에 주어진 데이터를 데이터베이스에 저장할 때 많은 문제에서 벗어날 수 있습니다. – tuomur
@eclaird : 일단 당신이 절대적으로 긍정적으로 * 유니 코드를 요구하면, 당신이 가지고있는 무엇이든 그것을'unicode()'라고 부르고 그것을 좋게 부르십시오. – Teddy