python - 以下 3 种方式在构造函数中声明属性有什么区别?
问题描述
def __init__(self):
self.score=[]
def __init__(self,score=[]):
self.score=score
def __init__(self,score):
self.score=[]
你能解释一下幕后发生的事情吗?TIA。
解决方案
def init(self):
self.score=[]
self.score
总是初始化为一个空列表。
def init(self,score=[]):
self.score=score
调用者可以传入一个可选的列表参数。如果没有,self.score
则在定义函数时将其初始化为一个空列表。(请参阅常见问题:可变默认参数了解为什么这是一个坏主意。)
def init(self,score):
self.score=[]
调用者必须传入一个列表参数(通常,该参数将被分配给self.score
,但您将该值丢弃并设置self.score
为一个空列表)。第三个例子可能应该是:
def init(self, score):
self.score = score
推荐阅读
- scala - 如何防止 Future 永远不会完成
- python - tox和Travis-CI有什么关系和区别?
- regex - 使用正则表达式从逗号分隔的字符串中提取值
- python - 在 Docker 容器中运行的 Python 脚本未将文件保存到正确的路径
- java - 获取在集合中排序的唯一文档
- gradle - Gradle - 命令行中的每个
- python - TypeError:pandas 列中需要一个整数
- java - 将外部 Jar 中的 orm xml 加载到 Spring Boot 中
- jquery - XMLHttpRequest 适用于 Chrome+Edge,但不适用于 Firefox
- python - exec() 为类方法范围变量分配一个新值