嗨,我是一个位于纽约市的Web开发人员,记录了我与React,React Native和Python的旅程,所有人都可以看到。请关注我的dev.to profo或my twitter以获取更新,如果您有疑问,请随时接触。感谢您的支持!
今天,我们将通过讨论面向对象的编程的第三个主要支柱,继承。
根据Wikipedia的说法,“继承是基于对象或类基于另一个对象(基于原型的继承)或类(基于类的继承)的机制,保留了相似的实现”。换句话说,当面向对象的编程语言允许继承时,我们可以创建从父类继承方法和数据的对象。这使得编写来自父母的新类,但也具有自己的功能或父母不存在的数据。
让我们以Vehicle
类的例子为例。也许有一些共同的属性和能力,无论您拥有哪种车辆,这都是真的。例如,所有车辆都需要能量。为了简化,我们会说他们都在加油,并且都有一个品牌名称。
这是一种使用构造函数的Toyota Camry实例的示例,该实例使用构造函数设置每加仑,品牌名称和型号的英里。它还具有打印车辆品牌和型号的Getter方法。
class Vehicle:
def __init__(self, mpg, brand, model):
self.mpg = mpg
self.brand = brand
self.model = model
def get_vehicle_name(self):
print(f"{self.brand} {self.model}")
现在,我们可以创建子类,从车辆类中继承所有方法和数据,但也有其自己独特的数据和方法。让我们做一个Scooter
类,这是车辆的子集,并继承了Vehicle
类。
class Scooter(Vehicle):
def __init__(self, mpg, color):
super().__init__(mpg, "Vespa", "PX")
self.__color = color
def get_color(self):
print("f{self.__color}")
在踏板车类中,我们通过Vehicle
类中的类别,以便踏板车继承父母的数据和方法。然后,在构造函数中,我们可以使用super()
调用来调用父构建器。就我们的踏板车类而言,我一直希望踏板车成为Vespa Brand PX型号踏板车,因此我将其传递给那些并限制用户能够制作自己的踏板车。然后,我在构造函数中设置了一个私有变量__color
,因为我们都知道Vespa所有者非常关心他们的华丽颜色。
喜欢在车辆组件上,mpg
,brand
和model
都是在构造函数方法中设置的,但是我们也有一种Scooter
儿童get_color()
的唯一方法,我们可以用它来打印车辆的颜色。
练习您可以通过制作一个名为Truck
的新课程来练习班级继承,该课程继承了Vehicle
class,又可以在构造函数中获得has_trailer_hitch
布尔值,并且具有打印Has trailer hitch
或getter方法Does not have trailer hitch
?
如果您喜欢这样的项目,并且想了解更多信息,请查看我的Twitter @stonestwebdev,我会跟随!明天见另一个项目。