zoukankan      html  css  js  c++  java
  • 类和对象

    类和对象

    一、类和对象

    • 类的意思:种类、分类、类别

    对象是特征与技能的结合体,我可能有身高体重、而你也有身高体重,所以你会说你像我,但是你一定不会说你像阿猫阿狗。并且我和你其实就可以说成是一类,而你和选课系统不能说是一类,因此给出类的定义:类就是一系列对象相似的特征与技能的结合体。

    在现实世界中:先有一个个具体存在的对象,然后随着人类文明的发展才了分类的概念,既然现实世界中有类这个概念,Python程序中也一定有类这个概念,但是在Python程序中:必须先定义类,然后调用类来产生对象。

    二、现实世界中定义类和对象

    2.1 定义对象

    就拿未来我们的选课系统来讲,我们先总结一套现实世界中的学生对象:

    • 对象1:

    • 特征:

    • 学校='oldboy'

    • 姓名='耗哥'

    • 年龄=18

    • 性别='male'

    • 技能:

    • 选课

    • 对象2:

    • 特征:

    • 学校='oldboy'

    • 姓名='猪哥'

    • 年龄=17

    • 性别='male'

    • 技能:

    • 选课

    • 对象3:

    • 特征:

    • 学校='oldboy'

    • 姓名='帅翔'

    • 年龄=19

    • 性别='female'

    • 技能:

    • 选课

    2.2 定义对象

    站在未来选课系统的角度,我们还可以总结现实世界中的学生类:

    • 老男孩学生类:

    • 相似的特征:

    • 学校='oldboy'

    • 相似的技能

    • 选课

    三、程序中定义类和对象

    3.1 定义类

    # 注意类中定义变量使用驼峰体
    class OldboyStudent():
        school = 'oldboy'
    
        def choose_course(self):
            print('is choosing course')
    

    曾经定义函数,函数只检测语法,不执行代码,但是定义类的时候,类体代码会在类定义阶段就立刻执行,并且会产生一个类的名称空间,也就是说类的本身其实就是一个容器/名称空间,是用来存放名字的,这是类的用途之一

    print(OldboyStudent.__dict__)
    
    {'__module__': '__main__', 'school': 'oldboy', 'choose_course': <function OldboyStudent.choose_course at 0x10d653ae8>, '__dict__': <attribute '__dict__' of 'OldboyStudent' objects>, '__weakref__': <attribute '__weakref__' of 'OldboyStudent' objects>, '__doc__': None}
    
    print(OldboyStudent.__dict__['school'])
    
    oldboy
    
    print(OldboyStudent.__dict__['choose_course'])
    
    <function OldboyStudent.choose_course at 0x10d653ae8>
    
    try:
        OldboyStudent.__dict__['choose_course']()
    except Exception as e:
        print('error:', e)
    
    error: choose_course() missing 1 required positional argument: 'self'
    
    print(OldboyStudent.school)
    
    oldboy
    
    OldboyStudent.choose_course(111)
    
    is choosing course
    
    print(OldboyStudent.choose_course)
    
    <function OldboyStudent.choose_course at 0x10d653ae8>
    
    OldboyStudent.__dict__['choose_course']
    
    <function __main__.OldboyStudent.choose_course(self)>
    
    OldboyStudent.country='China'
    
    OldboyStudent.__dict__['country']
    
    'China'
    
    OldboyStudent.country='CHINA'
    
    OldboyStudent.__dict__['country']
    
    'CHINA'
    
    del OldboyStudent.school
    
    print(OldboyStudent.__dict__)
    
    {'__module__': '__main__', 'school': 'oldboy', 'choose_course': <function OldboyStudent.choose_course at 0x10d653ae8>, '__dict__': <attribute '__dict__' of 'OldboyStudent' objects>, '__weakref__': <attribute '__weakref__' of 'OldboyStudent' objects>, '__doc__': None, 'country': 'CHINA'}
    

    3.2 定义对象

    调用类即可产生对象,调用类的过程,又称为类的实例化,实例化的结果称为类的对象/实例

    stu1=OldboyStudent() # 调用类会得到一个返回值,该返回值就是类的一个具体存在的对象/实例
    print(stu1.school)
    
    oldboy
    
    stu2=OldboyStudent() # 调用类会得到一个返回值,该返回值就是类的一个具体存在的对象/实例
    print(stu2.school)
    
    oldboy
    
    stu3=OldboyStudent() # 调用类会得到一个返回值,该返回值就是类的一个具体存在的对象/实例
    stu3.choose_course()
    
    is choosing course
    
  • 相关阅读:
    Python进阶之浅谈内置方法(补充)
    Python进阶之浅谈内置方法
    Python运算符优先级
    python之浅谈循环
    MTCNN
    MTCNN
    tf.train.batch and tf.train.shuffle_batch
    tf.add_to_collection 和 tf.get_collection 和 tf.add_n
    tensorflow 迁移学习-Demo
    tensorflow 加载预训练模型进行 finetune 的操作解析
  • 原文地址:https://www.cnblogs.com/Dr-wei/p/11861872.html
Copyright © 2011-2022 走看看