一、面向对象的基本介绍
面向过程与面向对象的区别
面向过程:根据业务逻辑从上到下写代码
面向对象:将数据与函数绑定到一起,进行封装,这样能够更快速的开发程序,减少了重复代码的重写过程
面向对象编程
面向对象编程,是一种解决软件复用的设计和编程方法。这种方法把软件系统中相近相似的操作逻辑和操作有应用数据、状态,以类的形式描述出来,以对象实例的形式在软件系统中复用,以达到提高软件开发效率的作用
二、类和对象
类与对象的关系
对象是面向对象编程的核心,在使用对象的过程中,为了将具有共同特征的行为的一组对象抽象定义,提出了另外一个新的概念——类
类的构成
类(Class)由三个部分构成
1.类的名称:类名
2.类的属性:一组数据
3.类的方法:允许对进行操作的方法(行为)
三、定义类
格式
下面代码中定义的两种类,一种是经典类,一种是新式类;object是python里所有类的最顶级父类
class 类名: 方法列表
#定义一个Hero类(经典类) class Hero(): def info(self): print("朋友们好") #定义一个Hero类(新式类) class Hero(object): def info(self): print("朋友们好")
四、创建对象
# 创建对象demo class Hero(object): #新式类定义形式 """info是一个实例方法,类对象可以调用实例方法,实例方法的第一个参数一定是self""" def info(self): """当对象调用实例方法时,python会自动将对象本身的引用作为参数,传递到实例方法的第一个参数self中""" print(self) print('self各不同,对象是出处') # Hero这个类实例化了一个对象app app=Hero() # 对象调用实例方法info(),执行info()里的代码 # 表示选择属性或者方法 app.info() print(app) #打印对象,则默认打印对象在内存的地址,结果等同于info里的prin(self) print(id(app)) #id(app)则是内存地址的十进制形式表示
五、添加和获取对象的属性
class App(object): def app01(self): print("第一个函数") def app02(self): print("第二个函数") app=App() app.app1="李明" app.app2=18 app.app3=140 print("我叫%s,我今年%d岁" % (app.app1,app.app2)) print("我叫%s,我今年%d厘米" %(app.app1,app.app3))
六、实例方法通过self获取对象属性
对象创建并添加属性后,可在类的实例方法中使用self获取属性
class App(object): def app01(self): print("第一个函数") def app02(self): print("第二个函数") def app03(self): print("我叫%s,我今年%d岁" % (self.app1, self.app2)) print("我叫%s,我今年%d厘米" % (self.app1, self.app3)) app=App() app.app1="李明" app.app2=18 app.app3=140 app.app03()
七、魔法方法(__init__)
__init__()方法,在创建一个对象时默认被调用,不需要手动调用__init__(self)中的self参数,不需要开发者传递,python解释器会自动把当前的对象引用传递过去。
class App(object): def __init__(self,app1,app2,app3): self.app1=app1 self.app2=app2 self.app3=app3 def app01(self): print("第一个函数") def app02(self): print("第二个函数") def app03(self): print("我叫%s,我今年%d岁" % (self.app1, self.app2)) print("我叫%s,我今年%d厘米" % (self.app1, self.app3)) app=App('李明',18,140) app.app03()
八、魔法方法(__str__)
当使用print输出对象的时候,默认打印对象的内存地址。如果类定义了__str__(self)方法,那么就会打印从在这个方法中 return 的数据
__str__方法通常返回一个字符串,作为这个对象的描述信息
class App(object): def __init__(self,app1,app2,app3): self.app1=app1 self.app2=app2 self.app3=app3 def app01(self): print("第一个函数") def app02(self): print("第二个函数") def __str__(self): return ("我叫%s,我今年%d岁" %(self.app1,self.app2)) app=App('李明',18,140) print(app)
九、魔法方法(__del__)
当使用print输出对象的时候,默认打印对象的内存地址。如果类定义了__str__(self)方法,那么就会打印从在这个方法中 return 的数据
__str__方法通常返回一个字符串,作为这个对象的描述信息
class Hero(object): def __init__(self,name): print("__init__方法被调用") self.name=name def __del__(self): print("__del__方法被调用") print("%s被GM干掉了" %self.name) app=Hero("泰达米尔") print("%d被删除1次" %id(app)) del(app) print("*"*40) app2=Hero("盖伦") app3=app2 app4=app2 print("%d被删除1次" %id(app2)) del(app2) print("%d被删除1次" %id(app3)) del(app3) print("%d被删除1次" %id(app4)) del(app4)