zoukankan      html  css  js  c++  java
  • (3)类的定义和对象的概念

    类的定义格式

    class Setset: #Python中类名推荐使用驼峰体,函数却不推荐使用驼峰体

    类的定义实例

    class OldboyStudent:
      # 相似的特征:
      school = 'oldboy'

      # 相似的技能
      def choose_course(self):
        print('choosing course....')

      print('=====run=======>')

    PS:类体代码在类定义阶段就会立即运行,会产生类的名称空间,用来将类体代码运行过程中产生的名字都存放起来

    print(OldboyStudent.school) #可以通过类直接查看类体下的变量的内存地址

    print(OldboyStudent.choose_course)  #可以通过类直接查看类体下函数的内存

    OldboyStudent.choose_course(1231)  #调用方式和函数一样加括号,也可以传入参数

    类的用途一

    类的本质就是一个名称空间,所以第一种用途就是使用其内部的名字,类名.名字

    OldboyStudent.school='OLDBOY'  #也可以直接修改类体下面变量的值

    del OldboyStudent.school  #也可以直接删除类体下的变量

    OldboyStudent.xxx=111  #原理就是往类的名称空间内新增了一个key=value的值,本质的操作就是在类下面新增了一个值

    print(OldboyStudent.school.__dict__['school']) #可以查看到值,但是不推荐这种麻烦的操作方式,还是遵循Python标准的访问语法即类名 +'  . ' + 名字的方式

    PS:类下有一个.__dict__方法,就是查看类的名称空间内存的名字,以字典形式存放

    print(OldboyStudent.school)  #推荐用这种方法去调用

    PS:OldboyStudent.school本质就是去OldboyStudent.school的名称空间内找一个对应的字符串形式的key,这就是调用原理

    PS:Python中调用类,格式体.后面的全部成为属性即OldboyStudent.school后面的school称之为属性

    类的用途二

    调用类来产生对象

    调用类发生的事:会有一个返回值,该返回值就一个对象

    stu1=OldboyStudent() #这里先将类放入一个变量中,即新建一个名称空间

    stu2=OldboyStudent()

    stu3=OldboyStudent()

    PS:每调用一次就会产生一个内存地址,每次调用的内存地址都是不同的

    对象的本质也是一个名称空间

    stu1.name='王三炮'  #往对象的名称空间内增加一个key=value的值

    stu1.gender='male'

    stu1.age=38


    stu2.name='王二炮'

    stu2.gender='male'

    stu2.age=18

    stu3.name='王大炮'

    stu3.gender='female'

    stu3.age=48

    print(stu1.__dict__)  #查看名称空间内的名字,可以查看有没有增加成功

    print(stu2.__dict__)

    print(stu3.__dict__)

    print(stu1.name)  #这个就是调用查看stu1下的name的值

    总结:
    类的本质是一个名称空间,对象的本质也是一个名称空间

    PS:通俗理解,其实就是调用类的时候赋值给一个变量,这个变量就是对象

    属性查找
    print(stu1.name) #就是去名称空间查找了一个对应的key,如果本身有name这个属性,则查找成功,如果本身没有则找到类中,如果类中没有则报错
    print(stu1.choose_course)

  • 相关阅读:
    [Tips] Resolve error: server certificate verification failed.
    [Tips] bzr Import error
    NPAPI命休矣
    [Buzz Today]2013.08.18
    [Tips]Fix node.js addon build error: "gyp: binding.gyp not found"
    The.first.glance.at.linux.commands
    [Idea Fragments]2013.08.08
    Linux利器:WinSCP,Putty,pscp和psftp
    本博客已经迁移去http://blog.brightwang.com/
    将博客搬至CSDN
  • 原文地址:https://www.cnblogs.com/shizhengquan/p/10090295.html
Copyright © 2011-2022 走看看