003集Class类应用实例—python基础入门实例

 

面向对象编程是一种编程方式,此编程方式的落地需要使用 “类” 和 “对象” 来实现,所以,面向对象编程其实就是对 “类” 和 “对象” 的使用。

  类就是一个模板,模板里可以包含多个函数,函数里实现一些功能

  对象则是根据模板创建的实例,通过实例对象可以执行类中的函数

 示例1,代码如下

# Myfun类,但是这个类只有一个函数f()
class Myfun:  # class 后必须跟冒号:,下一行必须空4格
    i = 12345
    def f(self):  # 类方法必须包含参数self, 且为第一个参数,self代表的是类的实例,后加:
        return 'hello world'  # return必须再空四格然后写代码,或同时按键ctrl+alt+L
x = Myfun()
# 访问类的属性和方法
print(x.i)  # 类x + 物品名i
print(x.f())  # 类x + 人名f

 运行结果如下:

F:\software\pythonProject\venv\Scripts\python.exe F:\software\pythonProject\0104.py 
12345
hello world

进程已结束,退出代码为 0

003集Class类应用实例—python基础入门实例_第1张图片

类的构造方法__init__()
假如init()也是人,但是他是家族和外界联络员,当外界的人想调用自己家族的人,就必须要先告诉他,所以只要家族的人被调用,那么init()就会被先执行,然后由他去告诉那个被调用的人,执行被调用的。

示例2:

class Complex:
    def __init__(self, aa, bb):  # 必须要有一个self参数
        self.a = aa  # 空格有严格限制,否则报错
        self.b = bb
x = Complex(3.0, 4.5)  # 输出结果:3. -4.5
print(x.a, x.b)

输出结果:3.0 4.5

003集Class类应用实例—python基础入门实例_第2张图片

示例3:

class People:
    name = ''
    age = 0
    # 定义私有属性,私有属性在类外部无法直接进行访问
    __weight = 0

    def __str__(self):
        return self.__weight

    # 定义构造方法
    def __init__(self, n, a, w):  # self为实例化本身,类似于js的this
        self.name = n
        self.age = a
        self.__weight = w

    def speak(self):
        print("%s 说:我 %d 岁。" % (self.name, self.age))

        '''
        ("%s 说:我 %d 岁。")此时的%s和%d均为参数,行参,需要在后面给他加上实参,需要加%
        比如("%a 前面为要传入的参数,后面这个是传入的实参"%(self.name ###此时就是实参))
        '''


# 实例化
p = People('cassie', 10, 3)
p.speak()

结果为:cassie 说:我 10 岁。

 003集Class类应用实例—python基础入门实例_第3张图片

示例4:

class People:
    name = ''
    age = 18
    sex = 'f'

    def __str__(self):  # 把名字直接展示出来,在直接print实例化对象时
        return self.name

    def __init__(self, name):  # 接收参数
        self.name = name  # 修改上面的name属性的值

    # print('this is start')

    def like_apple(self):  # 需要调用此函数
        if self.sex == 'f':
            print('女性爱吃苹果')
        elif self.sex == 'n':
            print('男性不爱吃苹果')
        else:
            print('没有性别,无法判断')
        print(self.name, self.age,'岁')


a = People('lucy')  # 实例化
a.like_apple()  # 调用自己写的函数
'''
输出结果为:
女性爱吃苹果
lucy 0
'''
print(a)   #因为上面写了__str__这个方法,所以在print时,直接返回了名字

 结果为:女性爱吃苹果
lucy 18 岁
lucy

003集Class类应用实例—python基础入门实例_第4张图片

在类的内部,使用 def 关键字来定义一个方法,与一般函数定义不同,类方法必须包含参数self, 且为第一个参数,self代表的是类的实例。

self:类的方法与普通的函数只有一个特别的区别——必须有一个额外的第一个参数名称, 按照惯例它的名称是self。
类的实例:是将类应用在实例场景之中,比如有个类里的函数是f,假如这个f具有print某一时刻的天气状况的能力,那么如果我需要这个f来print一下今天12点的天气,那么让他打印今天12点的天气这个动作,就是类的实例化,让类中的函数具有的能力变成真实的动作。

面向对象的三大特性是指:封装、继承和多态。

一、封装

封装,顾名思义就是将内容封装到某个地方,以后再去调用被封装在某处的内容。

所以,在使用面向对象的封装特性时,需要:

将内容封装到某处

从某处调用被封装的内容

二、继承

  • 继承,面向对象中的继承和现实生活中的继承相同,即:子可以继承父的内容。

    例如:

      猫可以:喵喵叫、吃、喝、拉、撒

      狗可以:汪汪叫、吃、喝、拉、撒

  • 如果我们要分别为猫和狗创建一个类,那么就需要为 猫 和 狗 实现他们所有的功能,如下所示:

    上述代码不难看出,吃、喝、拉、撒是猫和狗都具有的功能,而我们却分别的猫和狗的类中编写了两次。如果使用 继承 的思想,如下实现:

      动物:吃、喝、拉、撒

         猫:喵喵叫(猫继承动物的功能)

         狗:汪汪叫(狗继承动物的功能)

  • 三、多态 

     Pyhon不支持Java和C#这一类强类型语言中多态的写法,但是原生多态,其Python崇尚“鸭子类型”。

你可能感兴趣的:(python,python)