• 面向对象-类与对象


    面向过程:解决问题的步骤,核心是过程,像设计流水线,机械式的思维方式
    优点:复杂的问题流程化,进而简单化
    缺点:可拓展性差

    面向对象:核心就是对象二字,对象就是特征与技能的结合体
    优点:可拓展性强
    缺点:编程复杂度高
    应用场景:用户需求经常变化,互联网应用,游戏,企业内部应用

    类是一系列特征的东西;角度不同,类不同。

    类是一系列对象相似的特征与技能的结合体。

    对象是特征与技能的结合体。

    在程序中:务必保证先定义类,后产生对象

    在程序中,务必保证:先定义(类),后使用(产生对象)
    PS:
      1. 在程序中特征用变量标识,技能用函数标识
      2. 因而类中最常见的无非是:变量和函数的定义
    
    #程序中的类
    class OldboyStudent:
        school='oldboy'  # 变量属性
        def learn(self):
            print('is learning')
            
        def eat(self):
            print('is eating')
        
        def sleep(self):
            print('is sleeping')
      
    
    
    #注意:
      1.类中可以有任意python代码,这些代码在类定义阶段便会执行
      2.因而会产生新的名称空间,用来存放类的变量名与函数名,可以通过OldboyStudent.__dict__查看
      3.对于经典类来说我们可以通过该字典操作类名称空间的名字(新式类有限制),但python为我们提供专门的.语法
      4.点是访问属性的语法,类中定义的名字,都是类的属性
    
    #程序中类的用法
    .:专门用来访问属性,本质操作的就是__dict__
    OldboyStudent.school #等于经典类的操作OldboyStudent.__dict__['school']
    OldboyStudent.school='Oldboy' #等于经典类的操作OldboyStudent.__dict__['school']='Oldboy'
    OldboyStudent.x=1 #等于经典类的操作OldboyStudent.__dict__['x']=1
    del OldboyStudent.x #等于经典类的操作OldboyStudent.__dict__.pop('x')
    
    
    #程序中的对象
    #调用类,或称为实例化,得到对象
    s1=OldboyStudent()
    s2=OldboyStudent()
    s3=OldboyStudent()
    
    #如此,s1、s2、s3都一样了,而这三者除了相似的属性之外还各种不同的属性,这就用到了__init__
    #注意:该方法是在对象产生之后才会执行,只用来为对象进行初始化操作,可以有任意代码,但一定不能有返回值
    class OldboyStudent:
        ......
        def __init__(self,name,age,sex):
            self.name=name
            self.age=age
            self.sex=sex
        ......
    
    
    s1=OldboyStudent('李坦克','',18) #先调用类产生空对象s1,然后调用OldboyStudent.__init__(s1,'李坦克','男',18)
    s2=OldboyStudent('王大炮','',38)
    s3=OldboyStudent('牛榴弹','',78)
    
    
    #程序中对象的用法
    #执行__init__,s1.name='牛榴弹',很明显也会产生对象的名称空间
    s2.__dict__
    {'name': '王大炮', 'age': '', 'sex': 38}
    
    s2.name #s2.__dict__['name']
    s2.name='王三炮' #s2.__dict__['name']='王三炮'
    s2.course='python' #s2.__dict__['course']='python'
    del s2.course #s2.__dict__.pop('course')
  • 相关阅读:
    Java并发(五):并发,迭代器和容器
    Java并发(四):并发集合ConcurrentHashMap的源码分析
    Java爬虫初体验
    提升Java代码质量(三)
    Get和Post的初步探究
    01-什么是ElasticSearch
    python-实现动态web服务器
    python-实现二叉树
    python-实现栈结构
    python-实现单链表
  • 原文地址:https://www.cnblogs.com/hexiaorui123/p/10111564.html
Copyright © 2020-2023  润新知