首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Python中的__init __(self)中寻址实例名称字符串

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

Stack Overflow用户
提问于 2018-09-21 05:02:59
回答 2查看 0关注 0票数 0

我正在做这样的事情:

代码语言:javascript
复制
class Class(object):
    def __init__(self):
        self.var=#new instance name string#   

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

代码语言:javascript
复制
c=Class()

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

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

代码语言:javascript
复制
c=Class()

然后,假设:

代码语言:javascript
复制
del c

稍后的:

代码语言:javascript
复制
c=Class()

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

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

代码语言:javascript
复制
c=Class()

然后,假设:

代码语言:javascript
复制
del c

稍后的:

代码语言:javascript
复制
c=Class()

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

EN

回答 2

Stack Overflow用户

发布于 2018-09-21 13:41:38

要保留数据对象,您需要使用数据库记录的唯一ID。

pesudo代码,因为我不知道你正在使用什么数据库模块

代码语言:javascript
复制
import db # assume this is your db module

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

    def get_by_id(self, id):
        records = db.execute('select * from table where id=%s' % str(id))
        if records:
            self.id = records[0]['id']
            self.name = records[0]['name']

    def save(self):
        db.execute('update table set name=%s where id=%s' % (self.name, str(self.id)))

再次,这是伪代码,我正在使用的字符串注入技术不建议它是相当不安全的,它只是为了说明如何持久使用带有db的类。

票数 0
EN

Stack Overflow用户

发布于 2018-09-21 14:03:17

我不认为这是可能的,因为在完全构造和初始化对象之后,对新实例的变量的赋值会出现,因此您不知道它将在init方法中分配给它的变量名称

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100000789

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档