继承

一、子类的方法__init__()

创建子类实例时,python首先需要完成的任务是给父类的所有属性赋值。为此子类的方法__init__()需要父类施以援手。

例如下面模拟电工汽车,电动汽车是一种特殊的汽车,因此我们需要在前面创建的Car类的基础上创建新的类ElectricCar.


class Car():
      --snip--

class ElectricCar(Car):
    def __init__(self,make,model,year):
        """初始化父类的属性"""
        super().__init__(make,model,year)

my_tesla  = ElectricCar('tesla','model s',2016)
print(my_tesla.get_descriptive_name())

创建子类时,必须包含父类在当前文件中,且位于子类前面。

定义子类时,必须在括号内指定父类的名称。方法__init__()接受创建实例所需的信息

super()是一个特殊的函数,帮助python将父类和子类关联起来。这行代码让python调用ElectricCar父类的方法__init__(),让ElectricCar实例包含父类的所有属性。父类也称为超类(superclass)

 二、给子类定义属性和方法

让一个类继承一个类后,可以添加区分子类和父类所需的新属性和方法


class Car():
      --snip--

class ElectricCar(Car):
      def __init__(self,make,model,year):
          super().__init__(make,model,year)
          self.battery_size = 70

def describe_battery(self):
    print("This car has a " + str(self.battery_size) + "-kwh battery.")

my_tesla = ElectricCar('tesla','model s',2016)
print(my_tesla.get_descriptive_name())
my_tesla.describr_battery()

三、重写父类方法

对于父类的方法,只要他不符合子类模拟的实物的行为,都可对其进行重写。为此可在子类中定义一个这样的方法,即他要与需要重写的父类方法同名。这样python将不会考虑这个父类的方法,而只关注你在子类中定义的相应方法。

四、将实例用作属性

class Car():
      --snip--

1.class Battery():
      2.def __init__(self,battery_size=70)
          self.battery_size = battery_size
      
      def describe_battery(self):
          print("This car has a " + str(self.battery_size) + "-kwh battery.")

class ElectricCar(Car):
      def __init__(self,make,model,year):
          super().__init__(make,model,year)
          3.self.battery = Battery()

my_tesla = ElectricCar('tesla','model s',2016)

print(my_tesla.get_descriptive_name())
my_tesla.battery.describe_battery()

 1处定义一个名为Battery的新类,他没有继承任何类。

2处的方法__init__()除self外,还有另一个形参battery_size。这个形参是可选的:如果没给他提供值,电瓶容量将被设置为70

3处添加一个名为self.battery的属性。这行代码让Python创建一个新的Battery实例,并将该实例存储在属性self.battery中

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值