python0.14-----面向对象思想/类/对象

Posted 一只鱼鱼鱼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python0.14-----面向对象思想/类/对象相关的知识,希望对你有一定的参考价值。

面向对象思想:
1.把数据及对数据的操作的方法放在一起,作为一个相互依赖的整体--对象。
2.把同类对象抽象出其共性,形成类。例如:老板和员工有很多共性,可以形成一个Person类。
3.类中的大多数数据,只能用本类的方法进行处理。例如:我有100块,不可能让你来花。
4.类通过一个简单的外部接口与外界进行联系。对象之间通过消息进行通信。
5.程序流程有用户在使用中决定。

面向过程:
强调的是功能行为,解决问题需要哪些步骤。
例如:盖房子先活水泥,再砌砖.....
面向对象:
关注的是解决问题需要哪些对象。
例如:要盖房子的话,只需要找到能盖房子的人。

把大象关进冰箱的不同思路:

面向过程思想:
1打开冰箱门。
2.将大象关进冰箱。
3.关闭冰箱门。

面向对象思想:
1.找到一个能够打开冰箱的人。
2.找到能够将大象关进冰箱的人。
3.找到一个能够关闭冰箱的人。

因为生活中,很多事情我们不想干。所以想找一能够干这些事情的对象。若不存在这个对象,就创建这个对象。让它把这些事情干了,然后我们就完成了这个任务。

例如:

 

图纸相当于类,车相当于对象
可以对照图纸造很多颜色不一样的车。
同样,可以通过类造出不同的对象。

 

类的设计:
只关心3样东西:
类名:见名知意,首字母大写,其它遵循驼峰原则。
属性:见名只意,其它遵循驼峰原则。
行为(方法或功能):见名知意,其它遵循驼峰原则。
例如:老婆的类名为wife,wife的属性有:名字,年龄等等,其方法有:吃,喝等等。

创建类:

类:一种数据类型,本身并不占内存空间,跟所学过的number,string,booleann等相似。用类创建的实例化对象(变量),对象占内存空间。

格式:

class 类型(父类列表):
  属性
  行为

 

例子:
class Person(object): #object: #object为所有类的父类,一般没有合适的父类就写父类。
  #定义属性:
  name=""
  age=0
  height=0
  weight=0
  #定义方法(定义函数):
  #注意:方法的参数必须以self当第一个参数,self代表类的实例(某个对象)。
  def run(self):
    print(\'run\')
  def eat(self,food)
    print(\'eat\'+food)

 

实例化对象:
格式: 对象名=类名(参数列表)   #若没有参数列表,也不能省略括号
例如:pr1=person()  

   pr2=person()

注意:对象在堆区,变量在栈区。pr1,pr2在栈区,它们存的是堆区的对象地址。不同的对象在堆区域的地址不同。

 

访问对象的属性和方法:
per=person() #实例化对象per
访问属性:
格式:对象名.属性名
赋值:对象名.属性名=新值。
per.name=\'bob\'
per.age=18
per.height=160

访问方法:
格式:对象名.方法名(参数列表)
per.run()
per.eat(\'apple\')

 

#题目:设计类实现人开枪射子弹

 

class Person:
  def __init__(self,gun):
    self.gun=gun
  def fire(self):
    self.gun.shoot()
  def fillBullet(self):
    self.gun.bullet.BulletCount+=1
    print(\'填装了一发\')

 


class Gun:
  def __init__(self,bullet):
    self.bullet=bullet
  def shoot(self):
    self.bullet.BulletCount-=1
    if self.bullet.BulletCount<=0:
      print(\'没有子弹了\')
    else :
      print(\'还有%d发\' %self.bullet.BulletCount)

 


class Bullet:
  def __init__(self,BulletCount):
    self.BulletCount=BulletCount

 

调用:

bullet=Bullet(5)

gun=Gun(bullet)

per=Person(gun)    

per.fire()

 

以上是关于python0.14-----面向对象思想/类/对象的主要内容,如果未能解决你的问题,请参考以下文章

面向对象

实体类作用封装与面向对象思想

Java面向对象思想

面向对象思想设计原则

Python 进阶 — 面向对象编程

面向对象编程(OOP)思想小结