python类的继承

python类的继承

面向对象三大特征:封装、继承、多态
面向对象编程 (OOP) 语言的一个主要功能就是“继承”,所谓继承就是使现有的类无需编码便可以拥有原有类的方法和属性。

被继承的类可以称之为父类、基类、超类。继承的类可以称之为子类、派生类。派生和继承是一体面,从父类向子类看就是派生,从子类向父类看就是继承。子类和父类的关系可以用“is a”类表示,即子类是父类的一种,是一个更具体、更加强大的父类。python支持单继承和多继承。
继承的优点:

  • 可以简化代码,减少冗余度
  • 提高了代码的可维护性
  • 提高了代码的安全性

单继承

所谓的单继承就是一个子类只有一个父类。子类会继承父类所有的属性和方法。

  • 私有成员在子类中无法直接使用
  • 子类对象无法直接使用继承自父类的私有成员
  • 子类方法和父类方法重名,通过子类对象调用的是子类方法
class Animal:
	def __init__(self,name,age):
		self.name = name
		self.__age =age

class Dog(Animal):
	def __init__(self,name,age,gender):
		#调用父类构造方法的好处,简化子类构造方法代码,实现了代码复用
		#1. super(当前类名,self).__init__(实参列表) #实参不要带self
		# super(Dog,self).__init__(name,age)
		# 2. super().__init__(实参列表)#实参不要带self
		super().__init__(name, age)
		#3. ⽗父类名.__init__(self,其它参数)
		# Animal.__init__(self,name,age)
			self.gender = gender

类成员包括:类属性和类方法,不同于成员属性和成员方法属于对象,***类属性和类方法属于类,可以不实例化对象,直接通过类名调用,***这些类成员为所有对象共有,一般用于对象间通信。

  • 在程序运行期间类属性始终存在
  • 类属性
    类方法和静态方法
  • 类方法属于类,为所有对象共有,可以通过类名或对象调用
  • 类方法可以用来访问类属性
  • 静态方法属于类的作用域内的全局函数
  • 类方法和静态方法的区别,类方法第一个参数是类对象,由系统传入,静态方法没有
  • 共同点:静态方法和类方法都可以通过类名直接调用,属于类,不属于对象
class Date:
	def init(self,year,month,day):
		self.year = year
		self.month = month
		self.day = day
	@classmethod #类方法
	def date_from_string(cls,date_string):
		'''
		:功能:根据传入字符串创建日期对象
		:param cls 类对象,和类名作用一样
		:param date_string: 日期字符串,格式必须是yyyy-mm-dd
		:return: 日期对象
		'''
		year,month,day = tuple(map(int,date_string.split('-')))
		return cls(year,month,day)
	@staticmethod
	def is_valid_date(date_string):
		year,month,day = tuple(map(int,date_string.split('-')))
		return year >= 0 and 1 < month <= 12 and 0< day <=31

if __name__ =="__main__":
	d1 = Date.date_from_string('2018-05-29')
	print(d1.year,d1.month,d1.day)
	print(Date.is_valid_date('2018-5-29'))

多继承

一个子类可以有多个父类。语法:

class 子类名(父类1,父类2....):
	子类体

**print(子类名.__mro__)**可以看继承顺序。继承虽然代码减少了,但是想要增加需求时,方法的改写需要长时间的培养。故不建议经常使用。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值