• 面向对象进阶-反射、面向对象图式总结(一)


     反射

    #反射 *****
    # name = 'alex'
    # 'name'

    class Teacher:
        dic = {'查看学生信息':'show_student','查看讲师信息':'show_teacher'}
        def show_student(self):
            print('show_student')

        def show_teacher(self):
            print('show_teacher')

        @classmethod
        def func(cls):
            print('hahaha')
    alex = Teacher()
    for k in Teacher.dic:
        print(k)
    key = input('输入需求 :')
    # print(Teacher.dic[key])
    if hasattr(alex,Teacher.dic[key]):
        func = getattr(alex,Teacher.dic[key])
        func()
    # # alex.show_student()  'show_student'
    # func = getattr(alex,'show_student')
    # func()

    # hasattr getattr delattr
    # if hasattr(Teacher,'dic'):#hasattr、getattr搭配使用,'dic'有就取,没有就不取(没有不会报错)
    #     ret = getattr(Teacher,'dic')   # Teacher.dic   # 类也是对象,通过‘dic’字符串去命名空间去找dic对于的变量,找到后返回
    # # ret2 = getattr(Teacher,'func')         # 类.方法  teacher.func,返回方法名的内存地址
    # # ret2()
    #     print(ret)


    # menu = Teacher.dic
    # for k in menu:
    #     print(k)

    # 通过反射
    # 对象名 获取对象属性 和 普通方法
    # 类名 获取静态属性 和类方法 和 静态方法

    # 普通方法 self
    # 静态方法 @staticmethod
    # 类方法 @classmethod
    # 属性方法 @property

    # 继承
    # 封装的

    #面向对象图式总结


    # 学员管理系统 : 开发规范
    # 整理面向对象的所有知识点
    # 时间计划表 :周末干什么 中等偏下的 每周来一天自习

  • 相关阅读:
    看看大对象是如何爆你的内存
    Web Api 多项目文档生成之SwaggerUI
    react-native执行 npm install cl.exe找不到 的问题
    在SourceTree中使用Git submodule
    [ElasticSearch] 如何使用中文分詞ik與繁簡轉換stconvert插件
    [Activator-HelloAkka] Create our Actors
    [Activator-HelloAkka] Define our Actors
    [Activator- HelloAkka] Define our Messages
    [Scala] Currying
    [Scala] Pattern Matching(模式匹配)
  • 原文地址:https://www.cnblogs.com/mys6/p/10665950.html
Copyright © 2020-2023  润新知