python - Python中一个类中具有相同名称的方法

标签 python overloading

如何在一个类中声明几个同名但参数数量不同或类型不同的方法?

我必须在下面的类(class)中改变什么?

class MyClass:
    """"""

    #----------------------------------------------------------------------
    def __init__(self):
        """Constructor"""
    def my_method(self,parameter_A_that_Must_Be_String):
        print parameter_A_that_Must_Be_String

    def my_method(self,parameter_A_that_Must_Be_String,parameter_B_that_Must_Be_String):
        print parameter_A_that_Must_Be_String
        print parameter_B_that_Must_Be_String

    def my_method(self,parameter_A_that_Must_Be_String,parameter_A_that_Must_Be_Int):
        print parameter_A_that_Must_Be_String * parameter_A_that_Must_Be_Int

最佳答案

您可以拥有一个接收可变数量参数的函数。

def my_method(*args, **kwds):
    # Do something

# When you call the method
my_method(a1, a2, k1=a3, k2=a4)

# You get:
args = (a1, a2)
kwds = {'k1':a3, 'k2':a4}

所以你可以修改你的函数如下:

def my_method(*args):
    if len(args) == 1 and isinstance(args[0], str):
        # Case 1
    elif len(args) == 2 and isinstance(args[1], int):
        # Case 2
    elif len(args) == 2 and isinstance(args[1], str):
        # Case 3

关于python - Python中一个类中具有相同名称的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5079609/

相关文章:

python - 是否可以在 Python 中同步列表?

c++ - &运算符在重载中是什么意思

c++ - 类运算符重载

c++ - 具有多态性的派生类中的重载函数 (C++)

java - 为什么这是程序的输出?

python - 将 Pandas 列值设置为数组

python - 调试时如何调用 Python 的列表?

python - 为什么我会收到 [Errno 7] Argument list too long 和 OSError : [Errno 24] Too many open files when using mrjob v0. 4.4?

python - Pybabel extract从html模板中提取关键字时添加额外的单引号

c++ - 设计问题 : Message processing components. .. 调用 incorect 重载函数