对象及面向对象的方法:关键字:class,self,init,str.
现实生活中,一切都是对象,如人类,动物,植物,哪怕是没有生命的汽车、电子产品,或者说抽象的天气等都是对象,而对象包含了静态特征和动态特征,静态如物品的颜色,形状,大小,动态如物品的转动,运动等。对象的静态特征抽象成属性,也就是变量;把动态特征抽象成行为,也就是方法。
step1. 定义类
类是对象的蓝图和模板,有了类就可以创建对象
定义类需要做两件事情:数据抽象和行为抽象
数据抽象 - 抽取对象共同的静态特征(找名词) - 属性
行为抽象 - 抽取对象共同的动态特征(找动词) - 方法
定义类的关键字 - class- 类名(每个单词首字母大写)
class Student(object):
def __init__(self,name='none',age=18):
self._name = name
self._age = age
def study(self,course):
print('%s正在学习%s' %(self._name, course))
def watch_av(self):
if self._age >= 18:
print('%s正在观看岛国爱情动作片!!' % self._name)
else:
print('%s,你才%s岁,我们推荐你去看《熊出没》!' % (self._name,self._age))
小结:这是第一步,定义类,把静态特征抽象出来,就学生而言,什么是静态特征呢,比如姓名,年龄;那么动态特征呢,比如学生可以看电视,学生可以学习,可以看书等等。看书是一个动作,看电视一个动作,可以分开来定义。框架都是一样,抓住静态特征与动态特征,仔细思考,应该能写出自己想要的结果。
step2. 调用构造方法创建学生对象
实际调用的是Student类中的init方法
def main():
stu1 = Student('xl')
step 3.给对象发出消息
通过给对象发消息堂对象完成某些工作
解决任何问题都是通过让对象去做事情
stu1.study('Python程序设计')
stu2 = Student('yqx')
stu2.name = 'yc'
stu2.study('HTML网页设计')
stu2.watch_av()
if __name__ == '__main__':
main()
小结:这一部分就是完成学生的动作,通过给对象发送消息完成对应的某些工作,解决所有问题都是通过让对象去做事情完成的。
例:数字时钟
class Clock(object):
def __init__(self,hour=0,minute=0,second=0):
self._hour = hour
self._minute = minute
self._sencond = second
def run(self):
"""走字"""
time_n = [self._hour,self._minute,self._minute]
self._sencond += 1
if self._sencond == 60:
self._sencond = 0
self._minute += 1
if self._minute == 60:
self._minute = 0
self._hour += 1
if self._hour == 24:
self._hour = 0
def show(self):
return ('%02d:%02d:%02d'%(self._hour,self._minute ,self._sencond ))
def main():
clc = Clock(23,59,58)
print(clc)
print(id(clc))
while True:
system('cls')
print(clc.show())
time.sleep(1)
clc.run()
if __name__ == '__main__':
main()
小结:数字时钟,对象就是小时,分钟,秒,让这些对象,进行变更来完成数字时钟,而方法就是秒表逢60进1,分钟逢60进1,小时逢24置零,完成数字时钟的制作。