• python 面向对象编程


    面向对象编程(Object Orient Programming,简称 OOP),是一种编程方式,这种编程方式需要使用"对象"来实现。

    对象具有以下特征:

    1、世间万物皆对象
    某个具体领域也是由对象组成,
    例如:
    在学校领域,对象包括 学生、教师、课程、成绩等
    在银行领域,对象包括银行账户、工作人员、支票、现金和验钞机等
    因此,问题领域中的概念和实体都可以被抽象为 对象。

    2、每个对象都是唯一的
    对象的唯一性来自于真实世界中事物的唯一性,
    世界上不存在两片一模一样的叶子,因此在软件系统中对象也具有唯一性,
    例如:学生小王、学生小李、小王的成绩单以及小李的成绩单,这些对象都是唯一的。

    3、对象具有属性和行为
    例如:小李,男,38岁,身高159,会唱歌、可单手开保时捷,
    小李的属性是:姓名、性别、身高,行为是:唱歌、单手开保时捷


    在比如:手机,品牌华为,价格5999,黑色,能够拍照、打电话以及看视频,
    手机的属性包括品牌、价格和颜色,行为包括拍照、打电话和看视频,
    对象的行为包括具有的功能及具体的实现。

    4、对象具有状态
    状态是指某个瞬间对象的各个属性的取值,
    对象的某些行为往往会改变对象自身的状态,即属性的取值,
    例如:小李体重200斤,经过减肥后,体重变为100斤

    5、对象分为 类对象 和 实例对象 两大类
    类对象 是具有相同属性和行为的实例对象的抽象,
    类对象 就是实例对象的模板,实例对象是由类对象创建出来的。


    例子:制作月饼,需要 月饼模具 以及 材料
    月饼模具 就是 类对象(实例对象的模板)
    月饼 就是 实例对象(由类对象创建出来),即 月饼 由 月饼模具 创建出来。


    面向对象编程的大体步骤:

    1、抽象出类对象
    2、抽象出类对象属性
    3、抽象出类对象的行为(方法)
    4、根据类对象创建实例对象
    5、通过实例对象访问属性的方法



    定义类对象以及创建实例对象

    一、定义类对象

    定义类对象的语法格式:
    
    class 类名(object):
        属性和方法
    

    1.类名由一个或多个单词组成,一般采取驼峰式写法,每个字母的首字母大写,其余的小写,例如: SomeClass
    2.(object)表示该类对象继承来自Python内置的类对象object, Python中所有的类对象都继承自一个统一的
    基类:object

    class SomeClass(object):
        pass
    


    二、创建实例对象

    根据类对象创建实例对象的语法格式:类名([实参])
    
    为了在创建实例对象后对其进行初始化,可以在类对象中定义一个名为 __init__ (以双下划线开头和结尾)的特殊方法,
    当创建实例对象后就会自动调用特殊方法 __init__。
    
    方法就是定义在类对象中的函数,方法与函数的区别在于:
    1、定义方法时,方法的第一个形参表示调用该方法的实例对象,第一形参的名称通常是 self ,也可以是其他名称;
    2、调用方法时,系统自动将调用该方法的实例对象作为实参传递给第一形参,第一实参会传递给第二形参,
    第二实参会传给第三形参,依此类推。
    
    # 创建类对象
    class SomeClass(object):
        pass
    
    # 创建实例对象,类名([实参])
    sc = SomeClass()
    print(sc)
    # <__main__.SomeClass object at 0x000000000282FC48>
    # 类对象 SomeClass 存在方十六进制的0x000000000282FC48 内存地址中
    
    


    # 创建类对象
    class SomePeople(object):
        def __init__(self, age, sex):
            self.age = age
            self.sex = sex
    
    # 创建实例对象,类名([实参])
    test = SomePeople(18, "男")
    
    print(test)
    



    练习1

    class Count():
        # 定义加法
        def add(self, a, b):
            return a + b
    
        # 定义减法
        def acc(self, a, b):
            return a - b
    
        # 加法和减法相乘
        def aee(self, a, b):
            # 这里的 self 就是类本身的实例参数
            return self.add(a, b) * self.acc(a, b)
    
    
    if __name__ == '__main__':
        # 实例化
        t = Count()
        # print(t.acc(3, 8))
    
        print(t.aee(7, 8)) # -15
    


    练习2

    # 定义类
    class ToastBeef():
        def __init__(self):
            # 被烤的时间
            self.cook_time = 0
            # 牛肉的初始状态,生的
            self.cook_static = '生的'
            # 调料列表,定义为空,代表开始的原味的
            self.condiments = []
    
        def cook(self, time):
            """烤牛肉的方法"""
            self.cook_time += time
            if 0 <= self.cook_time < 4:
                self.cook_static = '三分熟'
            elif 4 <= self.cook_time < 5:
                self.cook_static = '五分熟'
            elif 5 <= self.cook_time < 8:
                self.cook_static = '7分熟'
            elif self.cook_time >= 8:
                self.cook_static = '熟透了'
    
        def add_condiments(self, condiment):
            """添加调料"""
            self.condiments.append(condiment)
    
        def __str__(self):
            # 当使用print输出对象的时候,默认打印对象的内存地址。如果类定义了__str__方法,
            # 那么就会打印从在这个方法中 return 的数据。
            return f'牛肉烤了{self.cook_time}分钟, 状态是{self.cook_static}, 添加的调料有{self.condiments}'
    
    
    beef = ToastBeef()
    # print(beef)
    
    beef.cook(3)
    beef.add_condiments('孜然')
    print(beef)
    
    # beef.cook(2)
    # beef.add_condiments('胡椒粉')
    # print(beef)
    
    
    
  • 相关阅读:
    $.contains(a,b)
    文件拷贝, 使用 BIO,NIO的对比,四种写法性能分析。
    win32 窗口缩放时出现闪屏
    Java: md5 加密中文 & 注意编码
    win32: 查询滚动条相关信息的注意事项
    查询字符串(性能对比): Array Vs HashMap
    多线程读取,单线程写入
    写入与读取第三方的 cookie
    asp 读cookie 下划线 丢失
    win7(旗舰版)下,OleLoadPicture 加载内存中的图片(MagickGetImageBlob),返回值 < 0
  • 原文地址:https://www.cnblogs.com/wwho/p/15564094.html
Copyright © 2020-2023  润新知