Python_Weekend_10 定义类, 面向对象
2018-03-09 23:33
519 查看
其实我开始是蒙的,听了半天什么属性、对象的,赶脚好抽象的说。
晚自习看了今天讲的所有例题对面向对象目前以为的水准我是这样看的:
先定义项目名称
项目里面有什么元素
定义元素具体内容
传入参数输出
Step 1.定义类
类是对象的蓝图和模块 有了类就可以创建对象
定义类所需要的两件事情:数据抽象和行为抽象
数据抽象- 抽取对象共同的静态特征(找名词) - 属性
行为抽象 - 抽取对象共同的动态特征(找动词)- 方法
定义类的关键字 - class-类名(每个单词首字母大写) 驼峰命名法
好处:
而且将来任何时候想使用这种对象时直接复用这个类就可以了
结果:
一个时间表:
调用以上模块:
用面向对象写游泳池问题:
ps:明天要总结一下这周的内容了,知识点有点多。
晚自习看了今天讲的所有例题对面向对象目前以为的水准我是这样看的:
先定义项目名称
项目里面有什么元素
定义元素具体内容
传入参数输出
Step 1.定义类
类是对象的蓝图和模块 有了类就可以创建对象
定义类所需要的两件事情:数据抽象和行为抽象
数据抽象- 抽取对象共同的静态特征(找名词) - 属性
行为抽象 - 抽取对象共同的动态特征(找动词)- 方法
定义类的关键字 - class-类名(每个单词首字母大写) 驼峰命名法
形成一个逻辑上的整体 这个整体就叫对象
好处:
而且将来任何时候想使用这种对象时直接复用这个类就可以了
class Student(object): ## 给类取名字,每个名字首字母都要大写 # 构造方法(构造器/构造子-constructor) # 调用该方法的时候不是直接使用方法的名字而是使用类的名字 def __init__(self,name,age): # 初始化作用的意思 # 给对象绑定属性 self.name = name self.age = age # 我们定义一个方法就代码对象可以接收这个消息 # 对象的方法的第一个参数都是统一写成self # 它代表了接收消息的对象 - 对象.消息(参数) def study(self,course): # 方法 print('%s正在学习%s'%(self.name, course)) def watch_av(self) : # 或者写wathcAV (驼峰命名法) if self.age >= 18: print('%s正在观看岛国爱情动作片'% self.name) else : # 方法与方法之间必须要至少一个空格 print('%s,我们推荐你观看《熊出没》。' % self.name) # 先定义类,才可以造出对象 def main(): # Step 2.调用构造方法创建学生对象 # 实际上调用的是Student类中__init__方法 stu1 = Student('骆昊',38) # 属性 # Step 3. 给对象发出消息 # 通过给对象发消息让对象完成某些工作 # 解决任何问题都是通过让对象取做事情 stu1.study('Python程序设计') stu2 = Student('王大锤',16) stu2.study('HTML网页设计') stu2.watch_av() if __name__ == '__main__': main()
结果:
骆昊正在学习Python程序设计 王大锤正在学习HTML网页设计 王大锤,我们推荐你观看《熊出没》。
一个时间表:
class Clock(object): def __init__(self,hour,mintue=0,second=0): self._hour = hour self._mintue = mintue # 一个_ 用与保护程序不被修改 self._second = second def run(self): self._second +=1 if self._second == 60: self._second = 0 self._mintue += 1 if self._mintue == 60: self._mintue = 0 self._hour += 1 if self._hour == 24: self._hour = 0 def show(self): return '%02d:%02d:%02d'%\ (self._hour,self._mintue,self._second)
调用以上模块:
from os import system # 内置的模块 from test import Clock # 第三方的模块 from time import sleep # 再导入自己的模块 def main(): clock = Clock(23,59,58) while True: system('cls') print(clock.show()) sleep(1) clock.run() if __name__ == '__main__': main()
用面向对象写游泳池问题:
from math import pi class Circle(object): def __init__(self,radius): self._radius = radius def area(self): """计算面积""" return pi * self._radius ** 2 def perimeter(self): """计算周长""" return 2 * pi * self._radius def main(): r = float(input('请输入游泳池的半径:')) ##创建对象 big = Circle(r+3) small = Circle(r) print('围墙的造价为: %.2f元' % (big.perimeter() *32.5)) print('过道的造价为: %.2f元' % ((big.area() - small.area()) * 20)) if __name__ == '__main__': main()
class Rectangular(object): ## 定义一个矩形,描述它的长宽 def __init__(self,width,height): self._width = width self._height = height # 数据抽象 def area(self): return self._height * self._width ## 写了self. 加height就不会报错 def perimeter(self): return (self._height + self._width) * 2 # 定义一个类 尽量不要在类里面写print() input()之类的 # 而是用return,否则会和终端融合,比较糟糕 def main(): rec1 = Rectangular(12,5) print(rec1.area()) print(rec1.perimeter()) if __name__ == '__main__': main()
ps:明天要总结一下这周的内容了,知识点有点多。
相关文章推荐
- Python_Weekend_13 面向对象做三个分数、大球吃小球、五子棋
- python复习笔记[10] —— 面向对象程序设计
- python2.7学习笔记(10) ——面向对象高级编程
- Python10--面向对象
- Python10--面向对象
- 面向对象控与python内存泄漏
- Python学习(18)面向对象
- python 面向对象多继承和多态
- 【Python】学习笔记——-8.6、面向对象高级编程:6.使用元类
- python 面向对象中一些常用内建函数【getattr(), setattr(). hasattr(). delattr()...】
- Python之路【第五篇】:面向对象及相关
- [Python学习笔记][第六章Python面向对象程序设计]
- C#基础系列(10)-- 第三部分 面向对象相关 -- 浅复制与深复制(3)
- python之面向对象高级编程
- 我与python约个会:24. 企业级开发基础5:面向对象特征(封装)
- python Class:面向对象高级编程 @property
- python Class:面向对象高级编程 __call__& callable()
- 6-Python-面向对象
- 面向对象之Python的链表实现(一)类的构造
- 【Python】[面向对象高级编程] 多成继承,定制类,使用枚举