Skip to main content
 首页 » 编程设计

python之如何重载类成员的分配

2025年05月04日17bhlsheji

我正在使用 Django 在 Python 中编写 Player 模型类,我遇到了密码成员的小问题。我希望密码在分配时自动散列,但我找不到任何关于重载分配运算符或任何东西的信息。有什么方法可以重载 password 的分配,以便自动对其执行 hashlib.md5(password).hexdigest() 吗?

from django.db import models 
 
class Player(models.Model): 
    name = models.CharField(max_length=30,unique=True) 
    password = models.CharField(max_length=32) 
    email = models.EmailField() 

请您参考如下方法:

你不能使用字段的属性和覆盖 setter 吗?

引自 django documentation :

from django.db import models 
 
class Person(models.Model): 
    first_name = models.CharField(max_length=30) 
    last_name = models.CharField(max_length=30) 
 
    def _get_full_name(self): 
        return "%s %s" % (self.first_name, self.last_name) 
 
    def _set_full_name(self, combined_name): 
        self.first_name, self.last_name = combined_name.split(' ', 1) 
 
    full_name = property(_get_full_name) 
 
    full_name_2 = property(_get_full_name, _set_full_name)