专栏首页codersamPython每天五分钟-面向对象编程之类

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

面向对象

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

封装

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

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__方法时,实例化的时候就需要传递相应的参数,如果不需要传递,需要指定形参的默认值。

类属性

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

p.height = '206cm'
p.name = '姚明'
p.age = 24
print(p.name, p.age, p.height)
# 输出结果
# 姚明 24 206cm

类方法

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

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

类属性的访问控制

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

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()方法。 有时不仅仅是获取,还需要修改。需要定义修改方法。

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

类的继承

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

class Person(object):
	def run(self):
		print('person is running')

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

多态

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

class Lilei(Person):
	def run(self):
		print('lilei is running....')
li = Lilei()
li.run()
# lilei is running....

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

class Lilei(Person):
	def run(self):
		super().run()
		print('lilei is running....')

li = Lilei()
li.run()
# person is running
# lilei is running....

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python每天五分钟-条件控制

    注意:input()函数返回值是字符串类型的,需要使用int()函数转换成整数,int()函数如果参数类型为其他类型会报错,导致程序终止。浮点数可以用float...

    用户2475223
  • 给WordPress添加HTTPS

    HTTPS是超文本传输协议,用来建立浏览器和服务器之间的通讯服务,HTTP在传输请求头报文是明文传输,这将带来很多的隐患,HTTPS因此诞生。

    用户2475223
  • Python启动WSGI,make_server报错

    今天写了一个简单的python web server,启动后访问浏览器报了一个错误,如下:

    用户2475223
  • python记录_day17 类与类之间

    聚合关系:属于关联关系中的一种特例。侧重点是xxx和xxx聚合成xxx,各有各的生命周期。比如电脑,电脑里有CPU、硬盘、内存等,电脑挂了,CPU还是好的,还是...

    py3study
  • 面向对象编程-类

    面向对象编程OOP (object-oriented programming)是最有效的软件编写方法之一,面向对象是利用“类”和“对象”来创建各种模拟来实现对真...

    用户1679793
  • Python-面向对象编程

    概述: 面向过程:根据业务逻辑从上到下写代码。 函数式:将某功能代码封装到函数中,以后便无需重复编写,进调用函数即可。 面向对象:对函数进行分类和封装,让开发“...

    洗尽了浮华
  • 《Python基础教程》 读书笔记 第九章 魔法方法、属性和迭代器 9.5属性

    class Rectangle: def __init__(self): self.width=0 self.height=0 def setSize(...

    统计学家
  • 面向对象:类空间问题以及类之间的关系

    **总结:对象的属性不仅可以在__init__里面添加,还可以在类的其他方法或者类的外面添加。**

    changxin7
  • 类和对象(第十二章)

    对象是什么?对象就是可以抱在怀里使劲揉,然后吃钱的小祖宗,她是怎么构成的,爱钱+任性 = 对象。在Python里也一样 对象=属性+方法。

    天钧
  • python练习题-day26

    郭耀华

扫码关注云+社区

领取腾讯云代金券