zoukankan      html  css  js  c++  java
  • python-面向对象名词解析(类、实例、属性、方法、对象)

    面向对象的概念总结

    类:

    一系列对象的特征与技能的抽象

      如何理解:我们把现实生活中的物体可以抽象成一个个对象,如学校中的学生:

                  1、归类——我们可以把学生都归成一个学生类。

           2、抽象出特征——学生有什么特点?(学校、姓名、性别、年龄)

              3、抽象出技能——学生有什么技能?(学习、吃饭、打球、睡觉)

      A、当我们把学生抽象成一个类的时候,就可以通过构造类来生成一个个的学生:

      B、注意:在现实世界当中,我们通过对象来抽象出类。

            在程序中,我们要先定义类,才能通过类来生成对象。

    # 1、先从现实世界抽象定义类
    # 2、后再通过类产生一个个对象
    class Student:
        # 相似特征
        school = 'luffycity'
    
        # 相似技能
        def lean(self):
            print('is leaning')
    
        def eat(self):
            print('is eatting')
    
        def sleep(self):
            print('is sleeping')
    
    
    # 2、后通过类产生对象
    stu1 = Student()  # 实例化一个学生对象stu1
    stu2 = Student()
    stu3 = Student()
    print(stu1) 
    print(stu2)
    print(stu3)
    View Code

    类的使用:

      增删改查:

    #
    Student.local='北京' # 增加类
    #
    del Student.local # 删除类
    #
    Student.school='Luffycity' # 改类的属性
    #
    print(Student.__dict__) #查所有
    print(Student.school) #查单个
    View Code

    上面的情况是生成三个相同属性的对象,

    当我们要生成三个不同属性的情况就要用到__init__方法了

    实例:

    self :实例本身,在实例化时python解析器会自动把实例本身通过self参数传入。

      如果我们要实例化多个对象的时候,可以通过__init__()方法,把每个对象独有的属性通过self参数传入:

    class LuffyStudent:
        #相识特征
        school = 'luffycity'
        #相识技能
        def __init__(self,name,sex,age):
            self.Name = name
            self.Sex=sex
            self.Age=age
        def lean(self):
            print('is leaning')
        def eat(self):
            print('is eatting')
    
    stu1 = LuffyStudent('小何','',22)
    stu2 = LuffyStudent('小李','',23)
    stu3 = LuffyStudent('小红','',22)
    
    print(stu1.Name)
    View Code

    属性:

    对象所共有的特征称为属性。

       如上面代码:school 就是一个共有的特征了。

    方法:

    对象所有的技能称为方法。

       如上面代码:lean、eat等共有的技能称方法。

    对象:

      如上面代码,通过生成类,实例化后就产生一个对象

      stu1=School()   # 这个称为对象

    #对象的操作
    #
    stu1.local='北京' # 增加类
    #
    del stu1.local # 删除类
    #
    stu1.school='Luffycity' # 改类的属性
    #
    print(stu1.__dict__) #查所有
    print(stu1.school) #查单个
    View Code

    补充说明:

      1、所站的角度不同,定义的类截然不同

      2、现实中的类,并不完全等于程序中的类,程序中可能会把类拆分。

      3、程序中可以有现实中不存在的类——策略类。

     

  • 相关阅读:
    Netty源码解析与实战
    什么是序列化id?
    关于idea下tomcat输出日志的问题
    利用jstack 找到异常代码
    mysql 异常 Lock wait timeout exceeded; try restarting transaction;expc=java.sql.SQLExcept
    Spark-Hadoop、Hive、Spark 之间是什么关系?(转)
    转(数据分析的意义)
    按位取反~100=-101
    知识总汇
    前端(以Vue为例)webpack打包后dist文件包如何部署到django后台中
  • 原文地址:https://www.cnblogs.com/AYxing/p/8993077.html
Copyright © 2011-2022 走看看