Python学习笔记(十一)继承

本文介绍了Python中类的继承机制,包括子类如何继承父类的属性和方法、如何在子类中添加新的属性和方法、如何重写父类的方法以及如何使用实例作为属性等关键概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.子类的方法__init__()

    一个类继承另一个类时,他将自动获得另一个类的所有属性和方法。原有的类称为父类,而新类称为子类。子类继承其父类的所有属性和方法,同时还可以定义自己的属性和方法。

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

  定义子类时,必须在括号内指定父类的名称。

class Car(object):
	"""docstring for Car"""
	def __init__(self, make, model, year):
		self.make = make
		self.model = model
		self.year = year
		self.reading = 0

	def get_name(self):
		long_name = str(self.year) + ' ' + self.make + ' ' + self.model
		return long_name.title()

	def read_odometer(self):
		print(str(self.reading))

	def updata_odometer(self, mileage):
		self.reading = mileage

	def increment_odometer(self, miles):
		self.reading += miles
		
my_car = Car('audi', 'a4', 2016)
print(my_car.get_name())
my_car.reading = 23
my_car.read_odometer()
my_car.updata_odometer(66)
my_car.read_odometer()
my_car.increment_odometer(33)
my_car.read_odometer()

class ElectricCar(Car):
	"""docstring for ElectricCar"""
	def __init__(self, make, model, year):
		'''初始化父类的属性'''
		super(ElectricCar, self).__init__(make, model, year)
		#self.arg = arg
	
my_tesla = ElectricCar('tesla', 'model s', 2016)
print(my_tesla.get_name())
Result:
       2016 Tesla Model S
对于Python 2.7 中的继承来说,函数super()需要两个实参:子类名和对象self。我目前使用的编译器为Sublime Text 3,加不加这两个参数都可正常运行。

2.给定子类定义属性和方法

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

class ElectricCar(Car):
	"""docstring for ElectricCar"""
	def __init__(self, make, model, year):
		'''初始化父类的属性'''
		super().__init__(make, model, year)
		#self.arg = arg
		self.battery = 40

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

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

Result: 
      This car has a 40-KWh battery
11
   3.重写父类方法

      对于父类的方法,只要它不符合子类模拟的实物的行为,都可以对其进行重写。重写的方法要与父类方法同名,当你再调用该方法时,Python只关心子类中定义的相应方法。

  4.将实例用作属性

    

class ElectricCar(Car):
	"""docstring for ElectricCar"""
	def __init__(self, make, model, year):
		'''初始化父类的属性'''
		super().__init__(make, model, year)
		#self.arg = arg
		self.battery = Battery()

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

	
my_tesla = ElectricCar('tesla', 'model s', 2016)
my_tesla.battery.describe_battery()
print(my_tesla.get_name())

Result: 
        This car has a 40-KWh battery
        2016 Tesla Model S




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值