Python3之创建类的两种方式

本文介绍两种创建Python类的方法:使用class关键字和通过type函数手动创建。此外,还展示了如何根据问题列表动态生成Django表单字段。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

方式一:利用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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值