Python 初始化对象求助

2018-09-04 10:17:12 +08:00
 mikefy

我要初始化一个 python 对象,但是有很多个参数.

1.可以按照顺序放进去,比如 person(a,b,c,d,e,f,g),而这些参数是需要我计算的, 所以我需要这样写 person(func(1),func(2),func(3)...).

2.所以有没有什么方法来简化这个代码, 比如可以在里面写个循环之类的几个语句把所有的参数都放进去了.

3.另,不用 args 或者 kwargs。说的有点乱,大家将就一下看吧...

2393 次点击
所在节点    Python
16 条回复
HelloAmadeus
2018-09-04 10:32:51 +08:00
用装饰器解决
mikefy
2018-09-04 10:34:05 +08:00
@HelloAmadeus 学艺不精啊, 大佬能说细一点吗?
huaerxiela
2018-09-04 10:45:26 +08:00
params = [func(i) for i in range(1, 7)]
person(*params)
是这个意思吗你
mikefy
2018-09-04 10:51:21 +08:00
@huaerxiela 嗯嗯, 这确实是一个办法!赞一个, 楼上说的装饰器你了解吗?
huaerxiela
2018-09-04 10:55:15 +08:00
@mikefy 至于他说的装饰器,如果我没理解错你的需求的话,个人并不认为这个地方该装饰器发挥
alvin666
2018-09-04 11:07:27 +08:00
三楼不就是 arg 吗...(小声逼逼)
另外装饰器这里用不到,不过别的地方挺有用的,lz 可以看看
morefreeze
2018-09-04 11:11:07 +08:00
你如果参数都是经过同一个 func 函数,为什么直接把参数传进去,比如传个 person([1..3]) 这样,进去后再依次调用 map(func, arg)
如果每个参数的函数不同,那你必然要写个 a1=func1(1), a2=func2(2) 这是跑不掉的,你放哪也得这么写,没什么好省的

或者你先用笨办法写,哪里出现了重复再着手去简化,现在从题面上看都是 func,那只要传 func 的参数们就好了
huaerxiela
2018-09-04 11:11:07 +08:00
@alvin666 大声三五瓶呀
xiaket
2018-09-04 11:16:34 +08:00
写一个类方法, 在里面接受一群参数, 最后给一个实例出来
mikefy
2018-09-04 11:24:39 +08:00
@alvin666
@huaerxiela 我还以为装饰器在这里能用到呢. 这个*在这里是解包吧, 之前没想到, 我问题里面的意思是不去修改类的初始化方法成*args
mikefy
2018-09-04 11:29:58 +08:00
@morefreeze 原来方法有那么多! 请收下我的膝盖!
huaerxiela
2018-09-04 11:30:38 +08:00
@mikefy 这部分是基础你多多巩固才行,还有一些高阶函数,高效编程技巧都是需要了解的,哪怕去百度谷歌也要有个快捷切入点不是
mikefy
2018-09-04 11:36:12 +08:00
@huaerxiela 是啊, 正在做小功能呢, 基础估计要重新巩固下
zhzer
2018-09-04 13:05:38 +08:00
闭包呗
d18
2018-09-04 14:13:59 +08:00
让 func 能接收多个参数,然后结果也返回多个,person(*func(1,2,3,4))。
不过好像都差不多......其实不用太纠结这些语法技巧,意义不大。
jiangbingo
2018-09-04 17:27:36 +08:00
1 形成可迭代参数表,传入解包
2 map(func, arg list)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/485900

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX