前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python每天五分钟-面向对象编程之类

Python每天五分钟-面向对象编程之类

作者头像
用户2475223
发布2019-12-17 15:30:01
3560
发布2019-12-17 15:30:01
举报
文章被收录于专栏:codersamcodersam

面向对象

面向对象编程简称oop(Object Oriented Programming),是一种程序的设计架构。共有三大特性:封装、继承、多态。五大原则:单一职责原则、开放封闭原则、替换原则、依赖原则、接口分离原则。

封装

Python中的类使用class关键字来定义。类在面向对象编程中是占比很大的一部分,定义一个类相当于将某件事物的属性及基本操作归类起来。 例如:我们定义一个person类,person类中可以有身高、体重、年龄、名字等很多属性,可以有跑、跳、叫等基本操作。

代码语言:javascript
复制
class person(object):
	## 类实例化方法
	def __init__(self, name = 'hanmeimei', age = 12):
		self.name = name
		self.age = age

p = person('liming', 10)
print(p.name, p.age)
# 输出结果
# liming 10

类的初始化

__init__是将类实例化的时候调用的方法,即类初始化的方法,第一个参数默认是self也就是实例化对象本身。 当一个类中定义了__init__方法时,实例化的时候就需要传递相应的参数,如果不需要传递,需要指定形参的默认值。

类属性

在实例化类后我们可以定义或者修改类的属性

代码语言:javascript
复制
p.height = '206cm'
p.name = '姚明'
p.age = 24
print(p.name, p.age, p.height)
# 输出结果
# 姚明 24 206cm

类方法

在类内部定义一个获取姓名的方法

代码语言:javascript
复制
class person(object):
	## 类实例化方法
	def __init__(self, name = 'hanmeimei', age = 12):
		self.name = name
		self.age = age
	def getName(self):
		print(self.name)
p = person()
p.getName()
# 输出结果
# hanmeimei

类属性的访问控制

上面定义的属性都可以在类实例化后进行外部访问或修改,如果并不希望某个属性被外部访问或修改,可以在属性前增加两个下划线__,这样这个属性就变成了私有属性,外部是不可直接访问、不可直接修改的。

代码语言:javascript
复制
class person(object):
	## 类实例化方法
	def __init__(self, name = 'hanmeimei', age = 12):
		self.__name = name
		self.__age = age
	def getName(self):
		print(self.__name)
p = person()
print(p.__name)
# 报错结果 AttributeError: 'person' object has no attribute '__name' 表示这个对象没有__name属性

如果需要获取__name可以使用定义的getName()方法。 有时不仅仅是获取,还需要修改。需要定义修改方法。

代码语言:javascript
复制
class person(object):
	## 类实例化方法
	def __init__(self, name = 'hanmeimei', age = 12):
		self.__name = name
		self.__age = age
	def getName(self):
		print(self.__name)
	def setName(self, name):
		self.__name = name
p = person()
p.setName('lilei')
p.getName()
# 输出结果 
# lilei

类的继承

在面向对象编程中继承就是在原有类的基础上再次进行功能封装,并且可以使用或重写原有类的方法、属性,提高了编程效率。一般被继承的类称之为基类、父类,通过继承创建的类称之为子类、派生类。

代码语言:javascript
复制
class Person(object):
	def run(self):
		print('person is running')

class Lilei(Person):
	pass
li = Lilei()
li.run()
# person is running

多态

通过重写父类方法就可以体现多态的特性,多态表示同一个实例的相同方法在不同的业务场景下的不同表现形式。

代码语言:javascript
复制
class Lilei(Person):
	def run(self):
		print('lilei is running....')
li = Lilei()
li.run()
# lilei is running....

子类中可以使用super().run()来调用父类中的方法。

代码语言:javascript
复制
class Lilei(Person):
	def run(self):
		super().run()
		print('lilei is running....')

li = Lilei()
li.run()
# person is running
# lilei is running....
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年5月22日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 面向对象
  • 封装
  • 类的初始化
  • 类属性
  • 类方法
  • 类属性的访问控制
  • 类的继承
  • 多态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档