在python中,变量具有名称,而对象则没有(因为多个变量可以指向同一对象)
但是有一种方法可以在将对象的ubuntu@donald0:~$ pip list
DEPRECATION: The default format will switch to columns in the future. You can use --format=(legacy|columns) (or define a format=(legacy|columns) in your pip.conf under the [list] section) to disable this warning.
...
cryptography (2.1.4)
docker (3.7.1)
docker-pycreds (0.4.0)
...
属性分配给变量后对其进行添加/修改。
理想情况下,类似这样的事情:
name
编辑:实际上,我并不介意第二次打印是“火腿”还是“垃圾邮件”,因为我实际上并不打算在同一对象上有多个变量指向。无论情况如何,我只希望该对象具有名称。
我的想法是创建一种尽可能少写的参数文件。这样的简单代码:
spam = MagicObject()
print(spam.name) # output: "spam"
ham = spam
print(spam.name) # output: "ham"
将创建一个PrimaryKey对象并自动将其命名为“ person_id”
答案 0 :(得分:3)
我认为这是您所能达到的最接近的目标。它效率低下并且滥用globals
和properties
。另外,如果MagicObject
很复杂,则需要实现__eq__
(也可能需要实现__hash__
)。
这是 hack ,可能不应该在生产中使用。
class MagicObject:
@property
def name(self):
return [k for k, v in globals().items() if v == self]
a = MagicObject()
print(a.name)
b = a
print(a.name)
c = a
print(a.name)
del b
print(a.name)
输出
['a']
['a', 'b']
['a', 'b', 'c']
['a', 'c']
还请记住,在Python <3.7中,列表的顺序是任意的,因为字典没有顺序。
答案 1 :(得分:0)
好像您要编写一个ORM。两个建议: