繁体   English   中英

如何编写一个无参数或无参数初始化的python类

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM