面向对象

一. 面向对象的编写

面向对象编写的方法

方式一:归类+提取公共值

方式二:在指定类中编写和当前类相关的所有代码 + 提取公共值

class People:

	def __init__(self,name,age,gender): # 特殊的方法,如果 类名() ,则该方法会被自动执行,
		# 目的进行数据初始化 (构造方法).通过构造方法,可以将数据进行打包,以后使用时,去其中获取即可.
		self.n1 = name
		self.n2 = age
		self.n3 = gender

	def kc(self):
		data = "%s,性别%s,今年%s岁,喜欢吃" %(self.n1,self.n3,self.n2)
		print(data)

	def db(self):
		data = "%s,性别%s,今年%s岁,喜欢玩" %(self.n1,self.n3,self.n2)
		print(data)

	def bj(self):
		data = "%s,性别%s,今年%s岁,喜欢喝" %(self.n1,self.n3,self.n2)
		print(data)

obj = People('老狗',20,'男')      # 创建了一个对象/实例化一个对象, 将数据封装到对象中,以供自己在方法中调用, 还可以把封装了数据的对象供其他函数使用
obj.kc()                          # 通过对象调用其中一个方法
								  # obj是对象, db()是方法
obj.db()
obj.bj()

  

二. 面向对象的三大特性:封装/继承/多态

封装: 

将相关功能封装到一个类中:

class Message:
	def email(self):pass
	def msg(self):pass
	def wechat(self):pass

  将数据封装到一个对象中:

class Person:
	def __init__(self,name,age,gender):
		self.name = name
		self.age = age
		self.gender = gender

  

继承: 原则:现在自己类中找,没有就去父类找. 父类和子类是相对的.

在方法中有self.f2时, 如果其他的类中也有f2()这个方法, 按照调用的对象的继承的顺序来看是调用哪个方法

支持多继承(先找左/再找右), 多继承可以提高代码重用性 class Foo(Base, SuperBase): pass

class SuperBase:
		def f3(self):
			print('f3')

class Base(SuperBase):  # 父类,基类
	def f2(self):
		print('f2')

class Foo(Base):        # 子类,派生类
	def f1(self):
		print('f1')

obj = Foo()
obj.f1()
obj.f2()
obj.f3()

  

多态:

多种形态或多种状态, 由于python原生支持多态,所以没有特殊性

原文地址:https://www.cnblogs.com/NachoLau/p/9543910.html