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