# 首先你有一个command.py文件,内容如下,这里我们假若它后面还有100个方法

 class MyObject(object):
def __init__(self):
self.x =
def add(self):
return self.x + self.x def pow(self):
return self.x * self.x def sub(self):
return self.x - self.x def div(self):
return self.x / self.x
 # 然后我们有一个入口文件 exec.py,要根据用户的输入来执行后端的操作
from command import MyObject
computer=MyObject() def run():
inp = input('method>') if inp == 'add':
computer.add()
elif inp == 'sub':
computer.sub()
elif inp == 'div':
computer.div()
elif inp == 'pow':
computer.pow()
else:
print('')

上面使用了if来进行判断,那么假若我的command里面真的有100个方法,那我总不可能写100次判断吧,所以这里我们就会用到python的反射特性,看下面的代码

 from command import MyObject

 computer=MyObject()
def run(x):
inp = input('method>')
# 判断是否有这个属性
if hasattr(computer,inp):
# 有就获取然后赋值给新的变量
func = getattr(computer,inp)
print(func())
else:
# 没有我们来set一个
setattr(computer,inp,lambda x:x+)
func = getattr(computer,inp)
print(func(x)) if __name__ == '__main__':
run()

hasattr(),getattr(),setattr()的使用的更多相关文章

  1. 【转】Python的hasattr() getattr() setattr() 函数使用方法详解

    Python的hasattr() getattr() setattr() 函数使用方法详解 hasattr(object, name)判断一个对象里面是否有name属性或者name方法,返回BOOL值 ...

  2. hasattr() & getattr() & setattr()

    Python的hasattr() getattr() setattr() 函数使用方法详解   感谢作者 ---> 原文链接 hasattr(object, name) 判断一个对象里面是否有n ...

  3. python 内置函数的补充 isinstance,issubclass, hasattr ,getattr, setattr, delattr,str,del 用法,以及元类

    isinstance   是 python中的内置函数 , isinstance()用来判断一个函数是不是一个类型 issubclass  是python 中的内置函数,  用来一个类A是不是另外一个 ...

  4. isinstance/type/issubclass的用法,反射(hasattr,getattr,setattr,delattr)

    6.23 自我总结 面向对象的高阶 1.isinstance/type/issubclass 1.type 显示对象的类,但是不会显示他的父类 2.isinstance 会显示的对象的类,也会去找对象 ...

  5. 反射之hasattr() getattr() setattr() 函数

    Python的hasattr() getattr() setattr() 函数使用方法详解 hasattr(object, name)判断object中有没有一个name字符串对应的方法或属性,返回B ...

  6. Python hasattr,getattr,setattr,delattr

    #!/usr/bin/env python # -*- coding:utf-8 -*- # 作者:Presley # 邮箱:1209989516@qq.com # 时间:2018-11-04 # 反 ...

  7. Python的hasattr() getattr() setattr() 函数使用方法详解

    hasattr(object, name)判断一个对象里面是否有name属性或者name方法,返回BOOL值,有name特性返回True, 否则返回False.需要注意的是name要用括号括起来 1 ...

  8. 【python】isinstance可以接收多个类型,hasattr,getattr,setattr

    来源:廖雪峰 可以判断一个变量是否是某些类型中的一种,比如下面的代码就可以判断是否是str或者unicode: >>> isinstance('a', (str, unicode)) ...

  9. Python的hasattr() getattr() setattr() 函数使用方法详解 (转)

    来自:https://www.cnblogs.com/cenyu/p/5713686.html hasattr(object, name)判断一个对象里面是否有name属性或者name方法,返回BOO ...

随机推荐

  1. final类与final方法

    inal---用于类.方法前. final类---不可被继承. final方法---不可被覆盖. final类不能被继承. 如果我们不希望一个类被继承,我们使用final来修饰这个类.这个类将无法被继 ...

  2. JavaScript的作用域链

    /* js当中 每个函数都是一个执行环境 函数调用函数会进入新的执行环境结束之后再回来当前 作用域链: 在内部的作用域中可以访问和修改外部的变量 在外部作用域不能修改或者访问内部的变量 */ var ...

  3. 创建以mybatis为基础的web项目(2)mabitis中的一对一关系项目实战

    mabitis中的一对一关系项目实战: 1.首先根据创建以mybatis为基础的web项目(1)中的流程将web项目部署好 打开IDE,建立web工程 在lib下面粘贴mybatis的jar,log4 ...

  4. Maven使用本地jar包(两种方式)

    有些项目会用到一些Maven库上没有的jar包,这就需要我们自己引入了 这种情况有两种办法: 第一种方式,在pom文件中引用时使用本地路径: 首先把jar包放到项目中: 然后在pom文件中引入: &l ...

  5. 智能提示含查询多列(html+JS+handler+ HttpRemoting)一、html示列 加 JS加 请求 Handler

    <html> <head> </head> <body> <form id="recordform" name="r ...

  6. 关于sql多表去重问题

    很多人新手对于数据库distinct 的用法有误解接下来我们看一段代码: 数据表:table  id name    1 a   2 b   3 c   4 c   5 b   我们使用distinc ...

  7. 集合(list、set和map)区别

    1.List,Set都是继承自Collection接口,Map则不是 2.List特点:元素有放入顺序,元素可重复:另外list支持for循环,也就是通过下标来遍历,也可以用迭代器, 3.Set特点: ...

  8. Win10 VS2012 无法注册IIS4.0 解决方案

    死活注册不上,度娘也找了,最终找到只要打个补丁就行. 安装: Microsoft Visual Studio 2012 更新 (KB3002339) 下载:http://www.microsoft.c ...

  9. es6第一章 continue

    块级作用域 ES6内允许块级作用域任意嵌套 {{{{let insane = 'Hello World'}}}} 这段代码使用了一个五层的作用域. {{{{ {let c = ''hello worl ...

  10. SQL Server 查询性能优化——创建索引原则(一)(转载)

    索引是什么?索引是提高查询性能的一个重要工具,索引就是把查询语句所需要的少量数据添加到索引分页中,这样访问数据时只要访问少数索引的分页就可以.但是索引对于提高查询性能也不是万能的,也不是建立越多的索引 ...