理解理解python中的'*','*args','**','**kwargs'

时间:2023-03-09 09:50:40
理解理解python中的'*','*args','**','**kwargs'

http://blog.****.net/callinglove/article/details/45483097

讲了一大堆,

我也是用来理解类继承当中的参数行为的。

=================

在任何时候继承类和重写方法的,我们应当用到’*args’和’**kwargs’将接收到的位置参数和键值参数给父类方法。

=================

测试代码

#!/usr/bin/env python
# -*- coding: utf-8 -*-

class Model(object):
    def __init__(self, name):
        self.name = name

    def save(self, force_update=False, force_insert=False):
        if force_update and force_insert:
            raise ValueError("Cannot perform both operations")

        if force_update:
            print "Updated an existing record"

        if force_insert:
            print "Created a new record"

class ChildModel(Model):
    def save(self, *args, **kwargs):
        if self.name == 'abcd':
            super(ChildModel, self).save(*args, **kwargs)
        else:
            return None

c = ChildModel('abcd')
c.save(force_insert=True)
c.save(force_update=True)

结果

理解理解python中的'*','*args','**','**kwargs'