带有空间的类属性

Dav*_*542 2 python python-3.x python-internals

是否可以在 Python 中执行类似以下操作?

class Object:
    
    def `two words`(self):
        return 'Worked!'
Run Code Online (Sandbox Code Playgroud)

根据方言,在 SQL 中,您通常可以使用类似Person.[two words]Person.`two words`等的东西来做到这一点。在 python 中可以做到这一点吗?

wim*_*wim 5

有可能的。类命名空间不仅仅限于标识符,这是有意为之的。但是,通常的属性访问语法instance.my attr在这种情况下将不起作用,因此您必须改用getattr(instance, "my attr")

>>> 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!'
Run Code Online (Sandbox Code Playgroud)

也可以使用 创建这样的属性setattr