036类和对象:介绍对象

1.对象:(python无处不存在对象)
    对象 = 属性 + 方法
    在编程中变量(属性)和函数(方法)
  类:定义类,越抽象越好

2.函数和方法的区别
    唯一区别是方法默认有一个self参数

3.类和对象的关系:
    抽象和具体;
    一个类为它的全部对象给初一个统一的定义,而每个对象是符合这种定义的一个实体
    就像模具和用模具作出的物品之间的关系一样。   

4.下面有一个例子:
 class Turtle: # Python 中的类名约定以大写字母开头
    """关于类的一个简单例子"""
    # 属性
    color = 'green'
    weight = 10
    legs = 4
    shell = True
    mouth = '大嘴'

    # 方法
    def climb(self):
        print("我正在很努力的向前爬......")

    def run(self):
        print("我正在飞快的向前跑......")

    def bite(self):
        print("咬死你咬死你!!")

    def eat(self):
        print("有得吃,真满足^_^")

    def sleep(self):
        print("困了,睡了,晚安,Zzzz")

    生成对象:      >>> tt = Turtle()
    调用对象的方法:>>> tt.sleep()

5. 面向对象(Object Orinted)特征
   python时面向对象语言
   (1)封装:对外部隐藏对象的工作细节
        如:想对一个列表进行排序时直接调用sort()方法,不需要知道它是如何实现的。
   (2)继承:子类自动共享父亲之间数据和方法的机制。
        如:>>> class MyList(list):  #定义一个类
          ...     pass             #占位
          ...
          >>> list1 = MyList()     #生成一个对象
      >>> list1
      []
      >>> list1.append(9)      #继承list的append方法,直接可以使用
      >>> list1.append(2)
      >>> list1.append(3)
      >>> list1
      [9, 2, 3]
      >>> list1.sort()         #继承list的sort方法,直接可以使用
      >>> list1
      [2, 3, 9]
   (3)多态:不同对象对同一方法,产生不同的结果
        如:动物的移动:老虎是奔跑,袋鼠是跳,乌龟是爬
    如:>>> class A:                 #定义第一个类A有fun方法
        ...     def fun(self):
        ...         print("I am A")
        ...
        >>> class B:                 #定义第二个类B有fun方法
        ...     def fun(self):
        ...         print("I am B")
        ...
        >>> a = A()
        >>> b = B()
                                    #a,b是不同的两个对象,都调用fun时,出现不同的结果
        >>> a.fun()                 
        I am A
        >>> b.fun()
        I am B


练习:
 1.定义一个Person类打印姓名
   1 #!/usr/bin/python
   2 #coding:utf8
   3
   4 class Person():
   5     name = 'xing xing'
   6     def printName(self):
   7         print(self.name)
   8 p = Person()
   9 p.printName()
 
 2.定义一个矩形类,属性是长和高
   方法:setRect(self):设置长和宽,getRect(self):获得长和宽,getArea(self):获得面积
   实现如下:
   1 #!/usr/bin/python
   2 #coding:utf8
   3
   4 class Rectangle():
   5     length = 5
   6     width  = 4
   7
   8     def setRect(self):
   9         print('请输入矩形的长和宽:')
  10         self.length = float(raw_input('长:'))
  11         self.width  = float(raw_input('宽:'))
  12
  13     def getRect(self):
  14         print('矩形的长是:%.2f,宽是%.2f' % (self.length,self.width))
  15
  16     def getArea(self):
  17         print('矩形面积是:%.2f' % (self.length * self.width))                                             
  18
  19 rect = Rectangle()
  20 rect.setRect()
  21 rect.getRect()
  22 rect.getArea()

  运行结果:
   #python Rectangle.py
   请输入矩形的长和宽:
   长:8
   宽:5
   矩形的长是:8.00,宽是5.00
   矩形面积是:40.00

posted @ 2015-10-16 23:28  淡蓝色的天空很美  阅读(268)  评论(0编辑  收藏  举报