Python中的一个类方法中有两个相同的类型参数

时间:2014-01-05 16:11:59

标签: python methods arguments

如何在Python中的一个类方法中声明两个相同类型的参数:

class A(object):
    def test(self):
        print("I am A")

class B(object):
    def test(self, A): #def test(self, A, A): -> of course doesn't work
        A.test()

a1 = A()
a2 = A()
b = B()
b.test(a1)
#b.test(a1, a2)

2 个答案:

答案 0 :(得分:2)

我不确定你的目的是什么,但是:

class A(object):
    @classmethod
    def test(cls):
        print ("I am %s" % cls.__name__)

class B(object):
    def test(self, *args):
         for arg in args:
             arg.test()

应该有用......

另请注意,B.test根本不使用self,它可能是staticmethod,但在使用静态方法时会采用通常的建议(问问自己是否有优势)使用静态方法而不仅仅是模块级功能。)

答案 1 :(得分:2)

您不必使用A作为参数名称。您可以使用任何名称。例如a1a2

class A(object):
    def test(self):
        print("I am A")

class B(object):
    def test(self, a1, a2):
        a1.test()
        a2.test()

a1 = A()
a2 = A()
b = B()
b.test(a1, a2)

你写了类方法。这些是Python中的特殊方法。您在示例中使用的常规方法称为实例方法或简称​​方法