您的位置:首页 > 编程语言 > Python开发

Python_Weekend_10 定义类, 面向对象

2018-03-09 23:33 519 查看
其实我开始是蒙的,听了半天什么属性、对象的,赶脚好抽象的说。

晚自习看了今天讲的所有例题对面向对象目前以为的水准我是这样看的:

先定义项目名称

项目里面有什么元素

定义元素具体内容

传入参数输出

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:明天要总结一下这周的内容了,知识点有点多。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: