• 面向对象编程


    面向对象基础

    面向对象编程(抽象)

    对象:特征和技能的结合体

    面向对象编程:一个个对象进行交互

    优点:扩展性非常强

    缺点:逻辑非常复杂

    类与对象

    类(类别):一系列具有相同特征和技能的对象

    现实世界中先有对象,后有类

    # 定义学生

       # 姓名: 猪瑞星
       # 学号: 222222
       # 学校: oldboy
           # 技能: 选课,三十六变


       # 姓名: 孔悟空
       # 学号: 111111
       # 学校: oldboy
           # 技能: 选课,七十二变

       # 姓名: 雷公
       # 学号: 666666
       # 学校: oldboy
           # 技能: 选课,电闪雷鸣,开车
           
    # 定义老师

       # 姓名:tank
       # 学校:oldboy
           # 技能:教课,piao

       # 姓名:nick
       # 学校:oldboy
           # 技能:教课,看书

     

    Python中先有类,再有对象

    class 类名(驼峰体):  # 定义类,会直接运行类体代码
       # 定义一系列特征
       # 定义一系列方法
       
    对象1 = 类名()  # 实例化出对象

    给对象定制独有的特征

    class OldBoyStudent:
       school = 'oldboy'
       
       def __init__(self, name ,age):
           self.name = name
           self.age = age

       def choose_course(self):
           print('is choosing course')
           
    stu1 = OldBoyStudent('a',1)
    stu1.school

    stu2 = OldBoyStudent('b',2)
    stu2.scool

    对象的属性查找顺序

    class OldBoyStudent:
       school = 'oldboy'
       name = 'c'
       
       def __init__(self, name ,age):
           self.name = name
           self.age = age

       def choose_course(self):
           print('is choosing course')
           
    stu1 = OldBoyStudent('a',1)
    stu1.school

    stu2 = OldBoyStudent('b',2)
    stu2.scool

    先从对象本身查找,然后从类中查找,类中也没有则报错

    类与对象的绑定方法

    class OldBoyStudent:
       school = 'oldboy'
       
       def __init__(self, name ,age):
           self.name = name
           self.age = age

       def choose_course(self):
           print(id(self))  # 10000
           print(self.school)
           print(f'{self.name} is choosing course')
           
    stu1 = OldBoyStudent('a',1)
    stu1.choose_course()  # self是对象本身
    print(id(stu1))  # 10000

    OldBoyStudent.choose_course(stu1)

    类与数据类型

    lis = list([1,2,3])
    lis2 = list([1,2,3])
    lis.append(4)
    # list.append(lis,4)

    对象的高度整合

    对象会有一大堆属性/数据,还会有一大堆方法来操作这些属性,然后对于不同的对象,这些属性又不同.

     

     

    用Python定义一个类

    class Foo:
       pass

    obj = Foo()

    obj.__dict__ # dict()

    obj.__dict__['count']  # 太麻烦了

    obj.count  # 简单化了

    obj.number = 3

    def init(obj,name,age,gender):
       obj.name = name
       obj.age = age
       obj.gender = gender

    init(obj,'nick','18','male')  # 麻烦
    init(obj1, 'tank','73','female')

    class OldBoyStudent:
       name = ''
       
       def __init__(self,name,age,gender):  # self是对象本身 # __开头的方法会在某种情况自动调用,__init__在类实例化的时候自动调用
           self.name = name
           self.age = age
           self.gender = gender
           
           
    stu1 = OldBoyStudent('nick','18','male')

    # 查找顺序 ,先从对象本身寻找,然后再去类中寻找,找不到报错


    # 类与数据类型

    lis = [1,2,3,4]  # lis = list([1,2,3,4])
    s = 'sdfsd'  # s = str('sdfsd')

    lis.append(5)
    list.append(lis,5)

    # 一个rw类赋予rw一对特征和一些技能,

    # 类或对象就是一堆特征和技能的结合体,一般这个技能是拿来操控这个特征的

    # rw1,rw2,rw3

    # 面向对象编程: 不同对象之间再交互

     

  • 相关阅读:
    在Visual Studio 2019中配置OpenCV环境
    Java中的垃圾回收
    线程池
    Java中锁优化
    二叉树的几种遍历
    java中Comparator的用法(排序、分组)
    java8 stream
    Java后台生成二维码并上传到阿里云OSS
    代码生成器的成长过程
    软件的军工六性
  • 原文地址:https://www.cnblogs.com/zrx19960128/p/11060983.html
Copyright © 2020-2023  润新知