zoukankan      html  css  js  c++  java
  • # 什么是类(class)?
    # 类是就是对象,也就是数据与功能的集合体
    # 所以类体中最常见的是变量与函数的定义,但是类体其实是可以包含任意其他代码的
    # 注意:类体代码是在类定义阶段就会立即执行,会产生类的名称空间



    # 类体最常见的是变量的定义和函数的定义,但其实类体可以包含任意Python代码,类体的代码在类定义阶段就会执行,
    # 因而会产生新的名称空间用来存放类中定义的名字,可以打印Student.__dict__来查看类这个容器内盛放的东西

    1、定义一个类:
    class Student:
    # 1、变量的定义
    stu_school='oldboy'

    # 空对象,'egon',18,'male'
    def __init__(obj,x,y,z):
    obj.stu_name=x # 空对象.stu_name='egon'
    obj.stu_age=y # 空对象.stu_age=18
    obj.stu_gender=z # 空对象.stu_gender='male'
    # return None

    # 2、功能的定义
    def tell_stu_info(stu_obj):
    print('学生信息:名字:%s 年龄:%s 性别:%s' %(
    stu_obj['stu_name'],
    stu_obj['stu_age'],
    stu_obj['stu_gender']
    ))

    def set_info(stu_obj,x,y,z):
    stu_obj['stu_name']=x
    stu_obj['stu_age']=y
    stu_obj['stu_gender']=z

    # print('========>')
    
    
    # 属性访问的语法
    # 1、访问数据属性
    # print(Student.stu_school) # Student.__dict__['stu_school']
    # 2、访问函数属性
    # print(Student.set_info) # Student.__dict__['set_info']

    属性查找顺序与绑定方法

       对象的名称空间里只存放着对象独有的属性,而对象们相似的属性是存放于类中的。

    对象在访问属性时,会优先从对象本身的__dict__中查找,未找到,则去类的__dict__中查找


    2、再调用类产生对象
    调用类的过程称为将类实例化,拿到的返回值就是程序中的对象,或称为一个实例,发生了三件事:
    # 1、先产生一个空对象
    # 2、python会自动调用类中的__init__方法然将空对象以及调用类时括号内传入的参数一同传给__init__方法
    # 3、返回初始完的对象
    stu1_obj=Student('egon',18,'male') # Student.__init__(空对象,'egon',18,'male')
    # stu2_obj=Student('lili',19,'female')
    # stu3_obj=Student('jack',20,'male')

    1.类中定义的变量是类的数据属性,是共享给所有对象用的,指向相同的内存地址
    2.类中定义的函数是类的函数属性,类可以使用,但必须遵循函数的参数规则,有几个参数需要传几个参数
    ps: 但其实类中定义的函数主要是给对象使用的,而且是绑定给对象的,虽然所有对象指向的都是相同的功能,
    但是绑定到不同的对象就是不同的绑定方法,内存地址各不相同。

    绑定到对象的方法特殊之处在于,绑定给谁就应该由谁来调用,谁来调用,就会将’谁’本身当做第一个参数自动传入(方法__init__也是一样的道理)
    # 总结__init__方法
    # 1、会在调用类时自动触发执行,用来为对象初始化自己独有的数据
    # 2、__init__内应该存放是为对象初始化属性的功能,但是是可以存放任意其他代码,想要在
    # 类调用时就立刻执行的代码都可以放到该方法内
    # 3、__init__方法必须返回None

    总结:

            在上述介绍类与对象的使用过程中,我们更多的是站在底层原理的角度去介绍类与对象之间的关联关系,如果只是站在使用的角度,

    我们无需考虑语法“对象.属性"中”属性“到底源自于哪里,只需要知道是通过对象获取到的就可以了,所以说,对象是一个高度整合的产物,

    有了对象,我们只需要使用”对象.xxx“的语法就可以得到跟这个对象相关的所有数据与功能,十分方便且解耦合程度极高。

     
  • 相关阅读:
    SQL 数据库中将某表中的一列数据拆分作为查询条件
    SQL数据库导入数据时提示未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序。 (System.Data)
    SQL常用内置函数
    SQL常用语句
    关于网页中鼠标双击文字选中设置
    SQL数据库查询列的类型及长度
    ASP. NET MVC项目 使用iTextSharp将网页代码生成PDF文件
    eslint-config-airbnb vs prettier vs standard
    windows批处理(bat脚本)
    python日志库loguru
  • 原文地址:https://www.cnblogs.com/h1227/p/12654942.html
Copyright © 2011-2022 走看看