面向对象基础 反射

一 、反射(根据字符串的形式去对象(某个模块)中操作成员)

  python中的反射功能是有以下四个内置函数提供:hahasattr、getattr、aetattr、delattr,这四个函数分别用于对对象内部执行:检查是否含有某成员,获取成员、设置成员、删除成员

1、通过字符串的形式来导入模块

inp=input("请输入模块名:")
mo=__import__(inp)

2、通过字符串的形式,在模块中寻找指定的函数,并执行

两种情况:1、如果在同级目录下面直接用__import__("xxxx")

       2、如果不在同一级目录下面(目录嵌套)用__import__("xxx.xxxx.xxx",fromlist=True)

# getattrinp = input("请输入模块名:")   #以字符串的形式导入模块
mo = __import__(inp)
inm = input("请输入函数名:")  #以字符串的形式在模块中找方法   相当于form  xxx  import  xxx
f = getattr(mo,inm)
f()

getattr(模块名,"xxx",None)  去模块中找xxx,如果没有没有找到则报错,我们也可以设置默认值None  如果没有找到则返回None(不报错)

hasattr(模块名,"xxx")根据字符串的形式判断xxx是否存在

setattr(模块名,"xxx",xxx)在内存中为某个模块设置一个东西

import asd
print(hasattr(asd,"age"))
setattr(asd,"age",18)
print(hasattr(asd,"age"))

False
True

delattr(模块名,"xxx") 在内存中删除某个东西

import asd
print(hasattr(asd,"name"))    #以前有
delattr(asd,"name")              #现在删除
print(hasattr(asd,"name"))

True
False

 基于反射实现类web框架的路由系统

import asd
url=input("请输入网址:")
new=url.split("/")
ret=hasattr(asd,new[1])                #用户直接输入网址www.xxxxxx/方法  就可以执行方法
if ret:
    r=getattr(asd,new[1])
    r()
else:
    print("404")
url=input("请输入模块名/方法:")
mo,faf=url.split("/")
m=__import__("xxx."+mo)
ret=hasattr(m,faf)                  #用户通过输入模块名/犯法就可以从任意的一个模块下执行任意一个方法
if ret:
    r=getattr(m,faf)
    r()
else:
    print("404")

二、面向对象

概述:

面向过程:根据业务逻辑从上到下垒代码

函数式编程:将某功能代码分装到函数中,日后便无需再写,直接调用

面向对象:

创建类和对象

面向对象编程是一种编程方式,此编程方式的使用需要使用 “类” 和 “对象”实现,所以面向对象就是对类和对象的使用

(类中函数的第一个参数必须是self)

class f:
    def f1(self):
        pass
    def f2(self):
        pass
obj=f()
obj.f1()

面向对象的三大特性:

封装,继承和多态

1、封装,顾名思义就是把内容分装到某个地方

所以在使用面向对象的封装功能时:1、将内容分装到某处

                2、从某处调用封装的函数

时间: 2024-08-08 17:47:15

面向对象基础 反射的相关文章

PYDay14:反射、面向对象基础-封装、集成、多态

1.反射 通过字符串的形式,导入模块再通过字符串的形式,去模块中寻找指定的函数并执行eg:__import__(模块) 更加字符串的形式去对象(某个模块)中操作其成员 常用方法: getattr() hasattr() setattr() delattr() 扩展: r = __import__('www.iclinux.com',fromlist=True) 反射示例: 使用反射,无需依照函数的数量来写判断了 2.面向对象基础: C# Java 只能使用面向对象编程 Pyhon Ruby:即可

【Java面向对象基础(三)】面向对象思想

[喵"的Android之路][基础篇(三)][Java面向对象基础]面向对象思想 1 面向对象的WWH 1.1 What--什么是面向对象 首先,要理解“对象”.在Thinking in Java中提到“Everything is an object”,即万物皆对象.这里的“对象”指的是任何实体或者任何可以当作实体看待的“虚幻的事物”.比如现实中的人(男人.女人.老人.小孩而...).动物(大象.狮子.猴子...).桌子.凳子.汽车.ATM机等等,也可以使看不见摸不着的空气(氧气.二氧化碳.氮气

python 面向对象基础和高级复习

面向对象基础 面向对象编程 面向过程编程:类似于工厂的流水线 优点:逻辑清晰 缺点:扩展性差 面向对象编程:核心是对象二字,对象属性和方法的集合体,面向对象编程就是一堆对象交互 优点:扩展性强 缺点:逻辑非常复杂 类与对象 对象:属性和方法的集合体 类:一系列相同属性和方法的集合体 现实世界中先有对象后有类,python中先有类,再实例化出对象 对象的属性的查找顺序 先对象本身-->类-->父类-->父类的父类-->object-->自己定制的元类-->type 给对象

C#面向对象基础(一)

面向对象这个词我很早就知道了,但具体是什么东西?什么是面向对象?一直以来都 不理解,只知道它有三大特征,即封装-继承-多态.直到学习完C#视频和看完设计模式 中面向对象基础后,对C#面向对象才有了一个大致的理解.下面这幅图是我对它的一个 宏观的认识. 一.基本知识 1.类成员 属性 C#不直接访问类的数据,通过get和set访问类中字段 方法 表示类的行为.方法可以构造,也可以重载 2.封装 每个对象都包含它能进行操作所需要的所有信息,这种特性就是封装 3.继承 如果两个对象A和B,可以描述为B

java基础学习05(面向对象基础01--类实例分析)

面向对象基础01(类实例分析) 实现的目标 1.如何分析一个类(类的基本分析思路) 分析的思路 1.根据要求写出类所包含的属性2.所有的属性都必须进行封装(private)3.封装之后的属性通过setter和getter设置和取得4.如果需要可以加入若干构造方法 5.再根据其它要求添加相应的方法6.类中的所有方法都不要直接输出,而是交给被调用处调用 Demo 定义并测试一个名为Student的类,包括属性有"学号"."姓名"以及3门课程"数学".

Python学习系列(八)( 面向对象基础)

 Python学习系列(八)( 面向对象基础) Python学习系列(七)( 数据库编程) 一,面向对象 1,域:属于一个对象或类的变量.有两种类型,即实例变量—属于每个实例/类的对象:类变量—属于类本身. 2,类的方法:对象也可以使用属于类的函数来具有功能,这样的函数称之为类的方法.域和方法合称为类的属性.类使用class关键字创建,类的属性被列在一个缩进块中. 3,self:类的方法与普通的函数只有一个特别的区别----他们必须有一个额外的第一个参数名称,但是在调用的时候不能为其赋值,Pyt

软件工程——理论、方法与实践 之 面向对象基础

软件工程——理论.方法与实践 之 面向对象基础 面向对象技术是软件工程领域中的重要技术,这种技术比较自然的模拟了人类认识客观世界的方式,是当前计算机软件工程学中的主流方法.面向对象方法认为:客观世界是由对象组成的,任何客观的事物或实体都是对象,复杂的对象可以由简单的对象组成:具有相同数据和相同操作的对象可以归并为一个类,对象是对象类的一个实例:类可以派生出子类,子类继承父类的全部特性(数据和操作),又可以有自己的新特征,子类与父类形成类的层次结构:对象之间通过消息传递相互联系:类具有封装性,其数

附录A培训实习生-面向对象基础(2):构造方法和带参数的构造方法

构造方法,又叫构造函数,其实就是对类进行实例化.构造方法与类同名,无返回值,也不需要void,在new时候调用.也就是说,就是调用构造方法的时候. 所有类都有构造方法,如果你不编码则系统默认生成空的的构造方法,如你有定义构造方法,那么默认的构造方法就会失效. 有参数的构造方法:比如我们希望每个小猫一诞生都有姓名,那么就应该写一个有参数的构造方法. 这是一个有参数的构造方法,可以看下: 1 using System; 2 using System.Collections.Generic; 3 us

大话设计模式学习笔记——面向对象基础

前言 好记性不如烂"笔头"系列--大话设计模式学习笔记 目录 面向对象基础 面向对象基础 什么是类与实例 一切事物皆为对象,即所有的东西老师对象,对象就是可以看到.感觉到.听到.触摸到.尝到.或闻到的东西.准确地说,对象是一个自包含的实体,用一组可识别的特性和行为来标识.面向对象编程,英文叫 Object-Oriented Programming,其实就是针对对象来进行编程的意思.类就是具有相同属性和功能的对象的抽象集合.实例就是一个真实的对象.比如我们属于'人'类,而个人就是'人'类