Python OOP的方法名称不同

时间:2016-03-12 09:33:03

标签: python oop

我想实现一个类和2个子类:

class cars(object):
    def chassis(self):
        ...

class automobile(cars):
    def chassisAutomobile(self):
        ...

class truck(cars):
    def chassisTruck(self):
        ...

方法“chassisAutomobile”和“chassisTruck”应该具有与“chassis”+附加(对于子类特殊)功能相同的特征。 我想这很简单,如果它们具有相同的名称 - 但在我的应用程序中它会有所不同,它们有不同的名称(chassis-chassisAutomobile,chassisTruck)。

你将如何在Python中实现这一点? 非常感谢你的帮助!

2 个答案:

答案 0 :(得分:3)

你应该为所有人使用相同的名称chassis(),因为它不像卡车那样,汽车的底盘和卡车的底盘:

class cars(object):
    def chassis(self):
        pass  # Do cars stuff

class automobile(cars):
    def chassis(self):
        super().chassis()
        # Do automobile stuff

class truck(cars):
    def chassis(self):
        super().chassis()
        # Do truck stuff

但是,如果您确定需要单独的名称(因此truck可以同时使用chassis()chassisTruck()),您只需拨打self.chassis()内{ {1}}和chassisTruck

答案 1 :(得分:2)

自扩展.chassis()类以来,您将可以访问两个子类中的cars方法。您可以编写特定于类的代码,然后在结尾(或开头)简单地调用.chassis()。例如:

class cars(object):
    def chassis(self):
        ...common code here...

class automobile(cars):
    def chassisAutomobile(self):
        ...do things...
        self.chassis()

class truck(cars):
    def chassisTruck(self):
        ...do things...
        self.chassis()

作为无关的旁注;根据{{​​3}}开始使用大写字母开始课程名称是一个好主意。