Python3之创建类的两种方式

方式一:利用class关键字

class Chinese(object):
    country='China'
    def __init__(self,name,age):
        self.name=name
        self.age=age
    def talk(self):
        print('%s is talking' %self.name)

方式二(就是手动模拟class创建类的过程):将创建类的步骤拆分开,手动去创建

def walk(self):
    print('=====>', self.name)


class_name = 'Foo'
bases = (object,)
class_dict = {
    'x': 1,
    'run': walk
}
Foo = type(class_name, bases, class_dict)
print(Foo.__dict__)

应用场景:动态创建一个form组件的字段

field_dict = {}
for que in question_list:
    if que.tp == 1:
        field_dict['val_%s' % que.id] = fields.ChoiceField(
            label=que.caption,
            error_messages={'required':'必填'},
            widget=widgets.RadioSelect,
            choices=[(i, i) for i in range(1, 11)]
        )
    elif que.tp == 2:
        field_dict['option_id_%s' % que.id] = fields.ChoiceField(
            label=que.caption,
            widget=widgets.RadioSelect,
            choices=models.Option.objects.filter(
                qs_id=que.id).values_list('id', 'name'))
    else:
        from django.core.exceptions import ValidationError
        from django.core.validators import RegexValidator
        # field_dict['x_%s' % que.id] = fields.CharField(
        #     label=que.caption, widget=widgets.Textarea,validators=[RegexValidator(regex=""),])
        field_dict['content_%s' % que.id] = fields.CharField(
            label=que.caption, widget=widgets.Textarea, validators=[func, ])

MyTestForm = type("MyTestForm", (Form,), field_dict)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值