如何防止某些变量出现在python Class对象中?

时间:2017-12-22 19:02:26

标签: python

我有一个包含一些用户变量的类,在shell中我想从数据库中获取第一个用户,我使用__dict__属性来查看所有用户数据,有一些数据我不希望他们出现在字典里面,比如他的密码和凭据,这是我的代码

class User(db.Model):

    __tablename__ = 'user'

    id = db.Column(db.Integer(), primary_key=True)
    username = db.Column(db.String())
    password = db.Column(db.String())
    public_id = db.Column(db.String(), default=uuid.uuid4)
    my_code = db.Column(db.String())
    credential = db.Column(db.String())

    def __repr__(self):
        return '{}'.format(self.username)

    def set_password(self, password):
        self.password = generate_password_hash(password)

    def check_password(self, value):
        return check_password_hash(self.password, value)

    def check_code(self, code):
        return True if code == self.my_code else False

    @property
    def get_id(self):
        return "{id}".format(id=self.public_id)

如果我使用__dict__属性,如何阻止密码凭据显示在字典中?

1 个答案:

答案 0 :(得分:1)

您应该尝试过滤User.__dict__只获取您要显示的数据。 class属性不可能超出Class.__dict__,这就是Python映射所有属性的方式。