zoukankan      html  css  js  c++  java
  • day 19

    面向对象基础

    什么是面对对象

    指的是一门编程思想

    面对对象编程

    核心是“对象”二字,对象指的是特征与技能的结合体

    基于该编程思想编写程序,就好比在创造世界,一种上帝式的思维方式

    ​ 优点:可扩展性高

    ​ 缺点:编写程序的复杂程度要远高于面向过程编程思想

    面向过程编程

    核心是“过程”二字,过程指的是做事情的步骤,即先做什么再做什么

    基于该思想编写程序,就好比一条工厂流水线,一种机械化的思维方式

    ​ 优点:逻辑清晰,复杂的问题流程化,进而简单化

    ​ 缺点:可扩展性差

    什么是类

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

    如何定义类

    首定义类,后调用类创造对象。

    定义类的语法

    def 函数名():
    
    
    class 类名:
    	对象相同的特征
        对象相同的技能
               
    

    class: 用户定义类的,class后跟的是类名

    类名:类的名字,用来调用创造对象的。

    注意:类名必须要遵循驼峰命名法,python在定义变量与函数时不推荐使用,但在定义类时推荐使用

    在定义类发生的事情

    1.类在定义时,会产生一个空的名称空间

    2.会把类内部所有名字,扔进类的名称空间中

    注意:类在定义阶段就已经产生好了名称空间,执行python文件时会执行类内部的代码

    学生类:
    相同特征 --》 类内部的变量
    	school
    
    相同技能 --》 类内部的函数
    	learn
        choose_course
        
        
    # 学生类
    class OldStudent:
        school = 'oldboy'
        print('tank is handsome...')
        # xxx
        def learn(self):
            print('learn python...')
            
        def choose_course(self):
            print('choose_course...')
            
           
        # OldStudent --> 会指向类的名称空间
        print(OldStudent.__dict__)
        print(OldStudent.__dict__.get('school'))
    

    对象

    如何产生对象

    语法:
    	类名 + () 调用类产生对象    
    

    名称空间的产生

    1.类的名称空间在类定义阶段就已经产生了

    2.对象的名称空间,在调用类时产生

    # 学生类 
    class OldStudent:
        # 若__init__中有self以外的参数,调用类时必须括号内传入参数
        def __init__(self,x,y,z):	# self --> 就是对象本身
            # print(self,x,y,z)
            # print('此处时__init__...')
            # 给对象添加特征的方式
            self.name = x
            self.age = y
            self,sex = z
            
        # 特征
        school = 'oldboy'
        # print('tank is handsome...')
        
        # 技能
        def learn(self):
            print('learn python...')
            
        def choose_course(self):	# self = None
            print('choose_course...')
                    
    
    *******调用类发生的事情“
    	1.首先会产生一个空的对象,就是产生“对象的名称空间”。
        2.会自动触发__init__.
        3.会把对象本身以及括号内的参数一并传给__init__函数。
        
    *******总结:调用类会产生一个对象,调用类的过程叫做类的实例化,产生的对象称之为类的一个实例。
    

    对象与类的查找顺序

    1.对象,属性。若对象本身有,则优先查找对象自己的。

    2.若对象本身没有,则到类里面,若类也没有,则报错。

    对象绑定方法的特殊之处

    类内部的函数主要是给对象用的:

    ​ 1.由类来调用类内部的函数,该函数只是一个普通的函数。

    ​ 普通函数需要接收几个参数就得传入几个参数。

    ​ 2.由对象来调用称之为对象的绑定方法,

    ​ 不同的对象调用该绑定方法,则会将不同的对象传入该绑定方法中

    ​ ****对象的绑定方法,是由对象来调用的,

    ​ 特殊之处就是 把对象当作第一个参数传入该方法中

    class OldStudent:
        def __init__(self,name,age,sex):
            self,name = name
            self,age = age
            self,sex = sex
            
        # 特征
        school = 'oldboy'
        # 技能
        def learn(self):	# 普通函数
            # print('stu',self)
            print('learn python...')
            
        def choose_course(self,course):		# self = 
            print(f'[{self.name}]choose_course {course}...')
           
    # 对象之间与类的方法功能是一样的
    
    
  • 相关阅读:
    CISP/CISA 每日一题 七
    CISP/CISA 每日一题 六
    CISP/CISA 每日一题 五
    C++编码优化之减少冗余拷贝或赋值
    CISP/CISA 每日一题 四
    CISP/CISA 每日一题 三
    CISP/CISA 每日一题 二
    CISP/CISA 每日一题
    C#与C++ DLL的交互
    数据同步工具otter(二)
  • 原文地址:https://www.cnblogs.com/colacheng0930/p/11644492.html
Copyright © 2011-2022 走看看