zoukankan      html  css  js  c++  java
  • 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()

  • 相关阅读:
    Quartz.Net 作业调度后台管理系统,基于Extjs
    [备份]EntityFramework
    WebMisSharp升级说明,最新版本1.6.0
    AllPay(欧付宝)支付接口集成
    Paypal Rest Api自定义物流地址(跳过填写物流地址)
    根据IP获取国家
    ViewBag 找不到编译动态表达式所需的一种或多种类型,是否缺少引用?
    Extjs4 DateTimeField,日期时间控件完美版
    IOS Swift 训练
    .Net集成PayPal的Demo
  • 原文地址:https://www.cnblogs.com/yulianggo/p/9217440.html
Copyright © 2011-2022 走看看