从品牌网站建设到网络营销策划,从策略到执行的一站式服务
问题发现:一个循环内,缺省值初始化同名变量,其中的list成员不是空,会延续之前同名变量的值。
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:空间域名、网页空间、营销软件、网站建设、乐亭网站维护、网站推广。示例代码:
# Define class
class Variant():
# use
def __init__(self, price = 500, description = 'default description', values = ['', '', '']):
self.price = price
self.description = description
self.values = values
def __str__(self):
return 'price: {}, description: {}, values: {}'.format(self.price, self.description, self.values)
variant_list = []
# Create instance with same name iteratively
for i in range(3):
current_variant = Variant()
if i == 1:
current_variant.values[2] = 'hello'
current_variant.price = i
current_variant.description = 'description of variant: {}'.format(i)
variant_list.append(current_variant)
# Test results
for variant in variant_list:
print(str(variant))
结果:所有实例的values列表值相同
原因:“可选参数默认值的设置在Python中只会被执行一次,也就是定义该函数的时候”如此使用缺省值初始化,list成员指向的是同一个list(地址),如果只是修改其中一个元素(而不是赋值新的list开辟新内存),那么所有instance的list成员都会被修改。
解决方法:直接在构造方法中置为空(self.values = ['', '', '']
),之后各个修改值
reference:Python 类成员变量使用缺省值初始化时要注意的一个坑
Python程序员最常犯的十个错误
另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
成都网站建设公司地址:成都市青羊区太升南路288号锦天国际A座10层 建设咨询028-86922220
成都快上网科技有限公司-四川网站建设设计公司 | 蜀ICP备19037934号 Copyright 2020,ALL Rights Reserved cdkjz.cn | 成都网站建设 | © Copyright 2020版权所有.
专家团队为您提供成都网站建设,成都网站设计,成都品牌网站设计,成都营销型网站制作等服务,成都建网站就找快上网! | 成都网站建设哪家好? | 网站建设地图