在Python中的__init __(self)中寻址实例名称字符串

Ale*_*lex 4 python instantiation instance

我正在做这样的事情:

class Class(object):
    def __init__(self):
        self.var=#new instance name string#   
Run Code Online (Sandbox Code Playgroud)

如何使我的实例的__ init __方法使用实例名称字符串'c'?以防万一:

c=Class()
Run Code Online (Sandbox Code Playgroud)

我希望c.var等于'c'.

感谢您的回复,我正在实现持久性,而Class是持久对象的类.我希望__ init __在以下情况下向数据库添加条目:

c=Class()
Run Code Online (Sandbox Code Playgroud)

然后,假设:

del c
Run Code Online (Sandbox Code Playgroud)

稍后的:

c=Class()
Run Code Online (Sandbox Code Playgroud)

如果已存在条目"c",则sholuld使用数据库中的数据创建实例,否则创建新条目.


感谢您的回复,我正在实现持久性,而Class是持久对象的类.我希望__ init __在以下情况下向数据库添加条目:

c=Class()
Run Code Online (Sandbox Code Playgroud)

然后,假设:

del c
Run Code Online (Sandbox Code Playgroud)

稍后的:

c=Class()
Run Code Online (Sandbox Code Playgroud)

如果已存在条目"c",则sholuld使用数据库中的数据创建实例,否则创建新条目.

dF.*_*dF. 7

Python没有变量,它有对象和名称.当你这样做

c = Class()
Run Code Online (Sandbox Code Playgroud)

你做了两件事:

  1. 创建类型的新对象 Class
  2. 将对象绑定到c当前范围中的名称.

您创建的对象没有任何"变量名称"的概念 - 如果稍后您这样做

a = c
Run Code Online (Sandbox Code Playgroud)

然后使用名称a和完全相同的方式访问相同的对象c.您可以删除名称a,该对象仍然存在.

如果您创建的对象需要具有名称,最好的方法是明确地将它传递给它们,

class Class(object):
    def __init__(self, name):
        self.name = name

var = Class('var')
Run Code Online (Sandbox Code Playgroud)