有没有一种方法可以在不同的类之间共享def?

时间:2019-04-11 05:03:39

标签: python python-3.x

我有一个包含很多类的应用程序。这些类具有与def相同的许多功能,而显然有些不是。

是否有一种方法可以定义在一个地方具有通用功能且可用于多个类的函数,还是我必须在每个类中至少具有def?

2 个答案:

答案 0 :(得分:3)

首先定义在外部定义的func
然后,要在不同的类中引用该函数,请在类内部使用相同的func

def func():
    print('func')

class B:

    def funcB(self):
        print('funcB')

    def func(self):
        func()

class C:

    def funcC(self):
        print('funcC')

    def func(self):
        func()

现在可以按如下方式调用它们。

b = B()
b.func()
#funcA
b.funcB()
#funcB
c = C()
c.func()
#funcA
c.funcC()
#funcC

答案 1 :(得分:1)

正如Amadan在评论中指出的那样,类继承是共享类对象的一种良好且一致的方式。下面是一个示例:

class animals:

    def __init__(self):
        pass

    def has_legs(self, type):
        if type == "snake":
            print(False)
        else:
            print(True)


class dog(animals):

    def __init__(self):
        # This is where the magic happens
        animals.__init__(self)
        pass

    def dog_has_legs(self):
        self.has_legs("dog")


bofur = dog()
bofur.dog_has_legs()
bofur.has_legs("snake")

结果:

>>> bofur.dog_has_legs()
True
>>> bofur.has_legs("snake")
False

如您所见,类dog继承自animals,因此它可以调用animals类中的函数和其他对象,就像它们属于{{1} }类。