构造函数重载 python
constructor overloading python
我试图在 Python 中实现方法重载,所以我创建了一个名为 Tes
的 Class
,其中我有两个变量,一个是 va,另一个是 vb.
class Tes:
def __init__(self,a,b):
self.va=a
self.vb=b
print(self.va)
print(self.vb)
def __init__(self,a):
self.__init__(a,"b-default")
Tes("n1","n2")
Tes("n3")
但它在 Tes("n1","n2")
中给了我错误,说:
Tes("n1","n2") TypeError: __init__() 接受 2 个位置参数,但给出了 3 个
如何在python中正确实现构造函数重载?
我猜你问的是这个
class Tes:
def __init__(self,a,b="default_value_b"):
self.va=a
self.vb=b
print(self.va)
print(self.vb)
只能使用覆盖,不能重载。
这种方式可能有用。
def __init__(self, a, b="some value"):
self.va = a
self.vb = b
# do something
How to implement constructor overloading correctly in python?
Python 不支持任何构造函数或函数重载。但是,它不需要。相反,它支持设置默认参数。
class Tes:
def __init__(self, a, b="default_value_b"):
self.va = a
self.vb = b
print(self.va)
print(self.vb)
如果您使用的是打字,问题会稍微改变。打字对于 Python 来说是一个相对较新的东西,而且纯粹是可选的。输入允许您根据预期静态验证您的代码,并且它可以通过提供实时帮助来简化代码编写。
在你的简单例子中,你不会使用重载,因为它只定义了一个可选参数。无论如何,参数的类型都保持不变。使用Mypy的类型注解,你的代码可以这样写:
class Tes:
def __init__(self, a: str, b: str = "default value for b") -> None:
self.va = a
self.vb = b
print(self.va)
print(self.vb)
如果要允许 None
作为 b
的值,请将签名更改为:
def __init__(self, a: str, b: Optional[str] = "default value for b") -> None:
Optional
可以从 typing
:
导入
from typing import Optional
我试图在 Python 中实现方法重载,所以我创建了一个名为 Tes
的 Class
,其中我有两个变量,一个是 va,另一个是 vb.
class Tes:
def __init__(self,a,b):
self.va=a
self.vb=b
print(self.va)
print(self.vb)
def __init__(self,a):
self.__init__(a,"b-default")
Tes("n1","n2")
Tes("n3")
但它在 Tes("n1","n2")
中给了我错误,说:
Tes("n1","n2") TypeError: __init__() 接受 2 个位置参数,但给出了 3 个
如何在python中正确实现构造函数重载?
我猜你问的是这个
class Tes:
def __init__(self,a,b="default_value_b"):
self.va=a
self.vb=b
print(self.va)
print(self.vb)
只能使用覆盖,不能重载。
这种方式可能有用。
def __init__(self, a, b="some value"):
self.va = a
self.vb = b
# do something
How to implement constructor overloading correctly in python?
Python 不支持任何构造函数或函数重载。但是,它不需要。相反,它支持设置默认参数。
class Tes:
def __init__(self, a, b="default_value_b"):
self.va = a
self.vb = b
print(self.va)
print(self.vb)
如果您使用的是打字,问题会稍微改变。打字对于 Python 来说是一个相对较新的东西,而且纯粹是可选的。输入允许您根据预期静态验证您的代码,并且它可以通过提供实时帮助来简化代码编写。
在你的简单例子中,你不会使用重载,因为它只定义了一个可选参数。无论如何,参数的类型都保持不变。使用Mypy的类型注解,你的代码可以这样写:
class Tes:
def __init__(self, a: str, b: str = "default value for b") -> None:
self.va = a
self.vb = b
print(self.va)
print(self.vb)
如果要允许 None
作为 b
的值,请将签名更改为:
def __init__(self, a: str, b: Optional[str] = "default value for b") -> None:
Optional
可以从 typing
:
from typing import Optional