我需要从数据库的类运行时类声明。Python类更换器
某些类需要重写字段和重新声明。
models.py
class Staff(object): name = StringField(verbose_name = "Full name") age = IntegerField(verbose_name = "Age")
utils.py
def class_changer(class_path, field_key, new_Field): pass ??????
>>> class_changer("models.Staff", "gender", BooleanField()) # Add new field to Staff
>>> class_changer("models.Country", "name", StringField()) # Add new class with name field
>>> class_changer("models.Staff", "country", ForeignKey("Country")) # Add new field to Staff
结果是
class Staff(object): name = StringField(verbose_name = "Full name") age = IntegerField(verbose_name = "Age") gender = BooleanField() country = ForeignKey("Country") class Country(object): name = StringField()
如何实现class_changer?
'setattr'&'eval'的组合可能对您有所帮助 - 不健壮但易于实现 – shahjapan 2010-11-10 09:05:26
我发现了太多的方法。 http://en.wikipedia.org/wiki/Aspect-oriented_programming eval,setattr,装饰者....但我不知道如何女巫的方法更好?我没有几个经验。 – Ankhaa 2010-11-10 09:21:38
很明显,你正在用django来做这件事,所以你应该知道,考虑到这样做会伤害我的头,因为它们使用的所有元类:所有东西都与其他东西相连。我通常也是一位非常幸运的幸运程序员,但我只是从这个开始走开。我建议你做得好,并考虑更好的架构。你想要实现什么目标? – aaronasterling 2010-11-10 10:04:06