1.面向对象
1)定义
面向对象
是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。
面向过程:
就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。
2)面向对象的基础语法
定义简单的类;
定义只包含方法的类;
定义只包含方法的类;
class 类名():
def 方法1(self, 参数列表) ;
pass
def 方法2(self, 参数列表) :
pass
当一个类定义完成之后,要使用这个类来创建对象,语法格式如下
对象变量=类名()
例如:小狗爱玩球,小狗爱吃肉
# 定义一个‘狗’类
class Dog():
def play(self):
print '小狗爱玩球'
def eat(self):
print '小狗爱吃肉'
# 创建一个‘狗’对象
dog = Dog()
dog.eat()
dog.play()
执行如下:
self的用法:
class Dog():
# 哪个对象调用的方法,self就是哪个的引用
def play(self):
print '%s 爱玩球' % self.name
def eat(self):
print '小狗爱吃肉'
# 创建一个狗对象
xixi = Dog()
xixi.name = 'xixi'
xixi.play()
xixi.eat()
# 创建一个狗对象
haha = Dog()
haha.name = 'haha'
haha.play()
haha.eat()
执行如下:
3)初始化方法
初始化方法
使用类名()
创建对象时,python的解释器会自动执行以下操作:
1.为对象再内存中分配空间–创建对象
2.调用初始化方法为对象的属性设置初始值–初始化方法__init__
这个初始化方法就是__init__
方法,__init__
是对象的内置方法
__init__
方法是专门用来定义一个类具有那些属性的方法
示例:
class Dog():
def __init__(self,dog_name):
self.name = dog_name
# 在类中,任何方法都可以使用self.name
def swim(self):
print '%s 爱游泳' % self.name
# 使用类名()创建对象的时候,会自动调用初始化方法__init__
xixi = Dog('xixi')
xixi.swim()
haha = Dog('haha')
haha.swim()
执行结果:
2.内置方法
1)__del__方法
在python中,当使用类名()
创建对象时,为对象分配完空间后,自动调用__init__
当一个对象被从内存中销毁前,会自动调用__del__
方法
例:
class Dog():
def __init__(self,dog_name):
self.name = dog_name
print '%s来了' % self.name
def __del__(self):
print '%s走了' % self.name
xixi = Dog('xixi')
print xixi.name
del xixi
print '*' * 50
执行如下:
销毁前自己调用
我们手动调用了之后就销毁了,最后不再自动调用
2)__str__方法
在python中,使用python输出对象变量
默认情况下,会输出这个变量引用的对象是由哪一个类创建的以及在内存中的地址(十六进制表示)
如果在开发中,希望使用print输出对象变量时,能够打印自定义的内容,就可以利用__str__
这个内置方法了
例:
class Dog():
def __init__(self,dog_name):
self.name = dog_name
def __str__(self):
# 必须返回一个字符串
return '我是%s' % self.name
xixi = Dog('xixi')
print xixi
执行结果:
3.面向对象的三大特征
1.封装
1)定义
封装是面向对象编程的一大特点
面向对象编程的第一步将属性和方法封装到一个抽象的类中
外界使用类创建对象,然后让对象调用方法
对象方法的细节都被封装在类的内部
根据职责把属性和方法封装在一个抽象的类中,定义类的准则
例1:xx爱跑步,体重是XX,每次跑步减轻0.5kg,每次吃东西增重1kg
class Person():
def __init__(self,name,weight):
self.name = name
self.weight = weight
def __str__(self):
return '体重是%.2f'% self.weight
def run(self):
print '%s爱跑步' % self.name
self.weight -= 0.5
def eat(self):
print '%s吃东西' % self.name
self.weight += 1
lin = Person('llj',45.0)
lin.run()
lin.eat()
print lin
执行结果:
跑步,吃东西
吃东西
跑步
例2:摆放家具
摆放家具需求:
1.房子有户型,总面积和家具名称列表
新房子没有任何的家具
2.家具有名字和战地面积,其中
床:占4平米衣柜:占2平面餐
桌:占1.5平米
3.将以上三件家具添加到房子中
4.打印房子时,要求输出:户型,总面积,剩余面积,家具名称列表
# 定义家具类
class Furniture():
def __init__(self,name,area