Day08 - 面向对象编程基础(学习笔记)

什么是面向对象编程???

一.类和对象

1.1 类的定义

用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。比如:人类(具有相同的属性–如眼睛、鼻子等和方法–生命活动等)、猫类(不同品种的猫,比如说英短、美短、布偶猫等,都具有相同的属性和“方法”,所以可以归为猫类。)

1.2 对象的定义

具有数据属性和函数属性的集合体。如在类中提到的猫类中的英短、美短、布偶猫都可以看作是猫这个类的对象。

1.3 面向对象中的其他概念??

二.定义类

2.1 基本结构

(1)使用class关键字定义类,类名的首字母大写【如class Student】
(2)_ init _是一个特殊的方法(方法–类中的函数),用于创建对象时进行初始化操作
【如:def _ _init _ (self,name,age):
通过这个方法(
init _)可以为学生绑定name和age两个属性

(3)方法里面的self代表的是当前类的实例化后的对象(并不是只有self,也可以用其他的,但self比较规范)

class Student(object):

    def __init__(self,name,grade,age):
        self.name=name
        self.grade=grade
        self.age=age

    def study(self,course_name):
        print("%s正在学习%s."%(self.name,self.course_name))   #这里course_name 不能写成self.course_name;不然会报错
#AttributeError: 'Student' object has no attribute 'course_name'(self.course_name)报错!
#原因:要写self.是因为在初始化中,定义了这个属性,而这里的course_name不是初始函数定义的

    def student_information(self):
        print("%s,%d岁,为%d年级的学生!"%(self.name,self.age,self.grade))


def main():
    stu1=Student('Anne',10,18)     #实例化类,生成一个对象(self)→stu1
    stu1.study("Python")
    age_anne=stu1.age
    print("%s的年龄为%d岁!"%(stu1.name,age_anne))
    stu1.student_information()

if __name__ == '__main__':
    main()

#Anne正在学习Python.
#Anne的年龄为18岁!
#Anne,18岁,为10年级的学生!

2.2 属性和方法???

2.3 构造器???

2.4 析构器???

2.5 _ _str _ _ 方法???

三.使用对象

3.1创建对象–实例化对象

类在定义后必须先实例化才能使用。类的实例化与函数调用类似,只要使用类名加圆括号的形式就
可以实例化一个类。
类实例化后会生成一个对象。一个类可以实例化成多个对象,对象与对象之间并不会相互影响。类
实例化后就可以使用其属性和方法等。

3.2 给对象发送消息–调用类属性和方法

调用属性:object.属性名
调用方法:object.方法名()
注意: 类里面的变量 称之为属性 类里面的函数 称之为方法

当我们定义好一个类之后,通过如下方法可以创建对象并给对象发消息(调用类属性和方法)。

def main():
    #创建学生对象并指定姓名和年龄
    stu1=Student('Anne',18)
    #给对象发study消息
    stu1.study('Python程序设计')   #Anne正在学习Python程序设计.
    #给对象发观看消息
    stu1.watch_movie()     #Anne只能看234.
    stu2=Student('Bob',12)     
    stu2.study('思想品德')     #Bob正在学习思想品德.
    stu2.watch_movie()      #Bob只能看123.

if __name__ == '__main__':
    main()

四.面向对象的四大支柱

4.1 抽象?

4.2 封装?

4.3 继承?

4.4 多态?

五.基础练习

5.1定义时钟类

定义一个类描述数字时钟。
(用类来定义一个数字时钟,这个时钟会随着时间的推移而变化)

在这里插入代码片from time import sleep

class Clock(object):
    #初始化操作,通过这个方法为Clock这个类绑定了三个属性,分别是:hour、minute、second
    def __init__(self,hour,minute,second):
        self.hour=hour
        self.minute=minute
        self.second=second

    def run(self):
        #定义时间走动规律
        self.second+=1
        if self.second==60:
            self.second=0
            self.minute+=1
            if self.minute==60:
                self.minute=0
                self.hour+=1
                if self.hour==24:
                    self.hour=0

    def show(self):
        #时间显示
        print("%02d:%02d:%02d"%(self.hour,self.minute,self.second))

def main():
    clock=Clock(8,16,20)   #使用对象;实例化类--创建对象
    while True:        #一直运行
        clock.run()      #使用对象;给对象发消息--调用类的方法
        sleep(1)     #每隔一秒显示
        clock.show()    #使用对象;调用类的方法

if __name__ == '__main__':
    main()

5.2定义距离类

定义一个类描述平面上的点随机移动到某个点之后,两点之间的距离。

import random
from math import sqrt

class Distance(object):
    def __init__(self,x=0,y=0):
        self.x=x
        self.y=y

    def pri_distance(self):
        print("初始距离为:%2f"%(sqrt(self.x**2+self.y**2)))

    def move_to(self):
        "随机移动后的位置"
        ran_x=random.randint(0,100)
        ran_y=random.randint(0,100)
        print("随机移动后,x=%d,y=%d"%(ran_x,ran_y))
        delta_x=abs(ran_x-self.x)
        delta_y=abs(ran_y-self.y)
        print("随机移动后的距离为:%2f"%(sqrt(delta_x**2+delta_y**2)))


def main():
    distance=Distance(3,4)
    distance.pri_distance()
    distance.move_to()

if __name__ == '__main__':
    main()

待补充…
学习网址:Python-100-Days

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值