![](/img/trans.png)
[英]How to write a class in Micropython that can be initialized with arguments?
[英]How to write a python class that is initialized with either no arguments or one argument
我正在从Java过渡到Python,目前被这个看似简单的代码所困扰,它们的Java等效功能很好。
我正在尝试创建一个名为TestClass的对象,该对象要么接受一个称为text的参数,要么不接受任何参数。 在这种情况下,会将默认字符串“ foo”分配给文本实例变量。
class TestClass(object):
def __init__(self):
self.text = "foo"
def __init__(self, text):
self.text = text
a = TestClass()
b = TestClass("bar")
我确实无法查明问题并得到以下错误:
一个= TestClass()
TypeError: init ()缺少1个必需的位置参数:'text
您的帮助将不胜感激,谢谢!
Java没有参数的默认值(至少我上次检查)
在Python中,您不能使用不同的参数来覆盖方法(有可能,但是第一个定义变得不可见,因此不是很有用)。
因此,您尝试执行的操作如下所示:
def __init__(self, text="foo"):
self.text = text
可以使用字符串,整数,浮点数,但请注意可变类型: “最小惊讶”和可变默认参数
另外,如果要“模拟”具有不同参数类型的相同方法名称,则必须定义一个方法(不变),并使用动态类型检查来确定要执行的操作:
def __init__(self, param):
if isinstance(param,str):
# param is a string
elif isinstance(param,int):
# param is an integer
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.