Можно ли сделать что-то вроде следующего в Python?
class Object:
def `two words`(self):
return 'Worked!'
В зависимости от диалекта в SQL вы обычно можете сделать это с помощью чего-то вроде Person.[two words]
или Person.`two words`
и т. д. Возможно ли это сделать в python?
Это возможно благодаря тому, что пространство имен классов не ограничено только идентификаторами (и это преднамеренно в языке). Однако для доступа к такому атрибуту нет другого синтаксиса, кроме getattr
.
>>> def two_words(self):
... return 'Worked!'
...
>>> Object = type("Object", (), {"two words": two_words})
>>> obj = Object()
>>> "two words" in dir(obj)
True
>>> getattr(obj, "two words")
<bound method two_words of <__main__.Object object at 0x10d070ee0>>
>>> getattr(obj, "two words")()
'Worked!'
Также возможно создать такой атрибут с помощью setattr
.
Думаю, это будет здесь, в PyUnicode_IsIdentifier
хорошо, хорошо, я думаю, я, вероятно, просто сопоставлю пробел, как вы, или преобразую его в
_20_
, если мне нужно сохранить эти данные (возможно, есть другие кодовые точки, не поддерживаемые идентификаторами). Знаете ли вы, где в CPython выполняются эти ограничения идентификаторов?