python面向对象——类的参数

python

之前一直困惑于python类在继承中冗长的参数,经过研究airflow的代码,发现是可以进行优化的.

Father类有两个必选参数src,dst,和一个默认参数concurrency,

子类有两个必选参数target_db, target_tb,在子类的初始化方法__init__中只需要有target_db, target_tb的签名,其他参数都可以用*args, **kwargs替代

在实际的子类实例化的时候,则需要将子类/父类所有必须参数都初始化,但毕竟子类的初始化方法简化了很多

class Father(object):

def __init__(self, src, dst, concurrency=1, *args, **kwargs):

self.src = src

self.dst = dst

self.concurrency = concurrency

self.json_dict = None

def print_obj(self):

print(self.__dict__)

class Son(Father):

def __init__(self, target_db, target_tb, *args, **kwargs):

super().__init__(*args, **kwargs)

self.target_db = target_db

self.target_tb = target_tb

if __name__ == '__main__':

t = Son(src='src',

dst='dst',

target_db='odoo',

target_tb='product')

t.print_obj()

 如果类参数较多,从一个字典来初始化的时候,可以进行简化:

if __name__ == '__main__':

print(sys.argv[1])

args = transform_params(sys.argv[1])

s=Son(**args)

需要保证字典中包含类的所有必选参数且字典参数key与类参数相同!

以上是 python面向对象——类的参数 的全部内容, 来源链接: utcz.com/z/387989.html

回到顶部