最近在使用python开发的过程中,想要实现通过字符串实现对函数的访问。在网上搜了一些方法,发现都不够简洁。...最终笔者通过python内置的getattr方法,实现了这个功能,方法非常简单,在这里分享一下。...---- 首先是对getattr方法的简单介绍 Python getattr() 函数介绍 描述 getattr() 函数用于返回一个对象属性值。...(a, 'bar2', 3) # 属性 bar2 不存在,但设置了默认值 3 >>> 通过字符串调用函数的实现 新建一个python脚本,命名 main.py import main as this...1,2) print(out) 为什么要通过字符串访问函数呢 笔者看法,字符串相较于函数更容易传递,比如我们可以轻松地通过命令行参数或者常量在不同脚本中传递。
描述getattr() 函数用于返回一个对象属性值。语法getattr 语法:getattr(object, name[, default])参数object -- 对象。...name -- 字符串,对象属性。default -- 默认返回值,如果不提供该参数,在没有对应属性时,将触发 AttributeError。返回值返回对象属性值。...实例以下实例展示了 getattr 的使用方法:>>>class A(object):... bar = 1...>>> a = A()>>> getattr(a, 'bar') # 获取属性 bar...值1>>> getattr(a, 'bar2') # 属性 bar2 不存在,触发异常Traceback (most recent call last): File "", line...1, in AttributeError: 'A' object has no attribute 'bar2'>>> getattr(a, 'bar2', 3) # 属性 bar2
参考链接: Python hasattr() http://www.runoob.com/python/python-func-hasattr.html https://www.cnblogs.com.../usr/bin/python 2 # -*- coding: UTF-8 -*- 3 4 class Coordinate: 5 x = 10 6 y = -5 7 ...point1, 'y')) 12 print(hasattr(point1, 'z')) 13 print(hasattr(point1, 'no')) # 没有该属性 描述 hasattr() 函数用于判断对象是否包含对应的属性...name -- 字符串,属性名。 返回值 如果对象有该属性返回 True,否则返回 False。
def avg(first, *rest): return (first + sum(rest)) / (1 + len(rest))
需要注意的是,如果是返回的对象的方法,返回的是方法的内存地址,如果需要运行这个方法, 可以在后面添加一对括号。 >>> class test(): ......return "HelloWord" ... >>> t=test() >>> getattr(t, "name") #获取name属性,存在就打印出来。...'xiaohua' >>> getattr(t, "run") #获取run方法,存在就打印出方法的内存地址。...'HelloWord' >>> getattr(t, "age") #获取一个不存在的属性。...:判断一个对象的属性是否存在,若不存在就添加该属性。
python魔法函数__dict__和__getattr__的妙用。__dict____dict__是用来存储对象属性的一个字典,其键为属性名,值为属性的值。...拓展:部分内建函数不包含__dict__属性比如list,如果要查看list的属性怎么办呢,这时候用dir(list),dir方法也是查看对象的属性,包括内建对象的属性,但是它的输出形式列表,而__dict...(如果只允许添加指定的属性需要用__solts__函数控制)。...__会在没有查找到相应实例属性时被调用的特点,方便的通过链式调用生成对应的url,在碰到get方法的时候调用函数获取其网页源码。...可调用的对象更加的优雅,链式的操作不仅优雅而且还能很好的说明调用的接口的意义。下面展示一个__getattr__经典应用的例子,可以通过获取属性值的方式获取字典的键值。
知识回顾: 有关类的多继承 掌握的是多继承类定义的写法。 理解类的同名方法的优先级。 __bases__查看一个类的多个继承父类 一、接口 开场白要说的其实是在python中没有接口的概念。...1. hasattr函数 hasatrr(参数1,参数2)函数来判断,如果某个参数1对象中有参数2的方法,那么就返回True,否则返回False 参数1:某个类实例化的对象 参数2:某个方法名称,用字符串类型表示...2. getattr函数 getattr(参数1,参数2 [,参数3]) 参数1:某个类的对象 参数2:某个类的方法名称,注意这个方法名称不要加小括号 参数3:默认函数,这个方法可以被省略,但是如果被省略的情况下...3.掌握getattr函数获取某个对象的方法或属性,并可以给予一个默认值。 4.掌握setattr函数设置某个对象的方法或属性。...开始了解python语言吧! html中的起到什么作用?前端面试经常考到 python中类和对象 python中函数递归VS循环 python中函数的可变参数
类的super函数 super函数的作用 python子类继承父类的方法而使用的关键字....当子类继承父类后 ,就可以使用父类的方法 super函数的用法 class Parent(object): def __init__(self): print('hello i am parent...__init__() #python3 括弧内的参数可以省略 # 当前类 类的实例 代码 # coding:utf-8 class Parent(object):
类的构造函数 类中的一种默认函数,用来将类实例化的同时, 将参数传入类中 构造函数的创建 def __init__(self, a, b) self.a = a self.b = b 代码
一:函数装饰函数 def wrapFun(func): def inner(a, b): print('function name:', func....return r return inner @wrapFun def myadd(a, b): return a + b print(myadd(2, 3)) 二:函数装饰类...self.a = a def fun(self): print('self.a =', self.a) m = Foo('xiemanR') m.fun() 三:类装饰函数..._func(a) @ShowFunName def Bar(a): return a print(Bar('xiemanR')) 四:类装饰类 class ShowClassName(object
class Pair: def init(self, x, y): self.x = x self.y = y
字符串的replace函数 功能 将字符串中的old(旧元素)替换成new(新元素),并能指定替换的数量 用法 newtr = string.replace(old, new, max) 参数 old...: 被替换的元素. new : 替代old的新元素 max : 可选,代表替换几个,默认全部替换全部匹配的old元素 代码 # coding:utf-8 info = ('百:量词,指数量多,在这里指全部...'《中国大百科全书·新闻出版》卷定义为:' '“概要介绍人类一切门类知识或某一门类知识的工具书。' '供查检所需知识和事实资料之用。'...'但也具有扩大读者知识视野,帮助系统求知的作用。' '它是一个国家和一个时代科学文化发展的标志。”')
字符串的strip函数 功能 string将去掉字符串左右两边的指定元素,默认是空格 用法 newstr = string.strip(item) 参数 括弧里需要传一个你想去掉的元素,可不填写 拓展知识...传入的元素如果不在开头或结尾则无效 lstrip仅去掉字符串开头的指定元素或空格 rstrip仅去掉字符串结尾的指定元素或空格 代码 # coding:utf-8 info = '
1.函数装饰函数def wrapFun(func): def inner(a, b): print('function name:', func....(a, b) return r return inner @wrapFundef myadd(a, b): return a + b print(myadd(2, 3))2.函数装饰类...: self.a = a def fun(self): print('self.a =', self.a) m = Foo('xiemanR')m.fun()3.类装饰函数..._func(a) @ShowFunNamedef Bar(a): return a print(Bar('xiemanR'))4.类装饰类class ShowClassName(object):..._cls(a) #Python小白学习交流群:711312441 @ShowClassNameclass Foobar(object): def __init__(self, a):
本文参考SICP,Function Abstraction python作为一个现代语言,结合着OOP和FP的多种性质,不同于其他OOP语言,python中的函数具有自己的环境,让我们从这里入手,看看类在...函数,闭包,其内部名称只可被内部访问,因此,本质上,它可以视为大部分成员都是私有的对象。 那么,函数有什么是public的呢,答案是,返回值,这是函数与外界沟通的桥梁....而我们则要借助这个桥梁,一点一点地把内部的所有私有成员给撬开。 答案是,表驱动,而这种实现也被称为Dispatcher,表内记载public,而其他的数据则是不可见的,这也是另一种形式下的权限访问。...而内部的成员等等都是通过偏移量计算得出。在编译器内部,偏移量又是一张符号表。它不可见于外界,但是同时又被类所知晓。...回头看一看,FP和OOP的思路殊途同归,都是借助着对外公开的唯一信息,逐渐抽丝剥茧,完成了对内部成员的访问。
大家好,又见面了,我是你们的朋友全栈君。...python字符串常用方法 find(sub[, start[, end]]) 在索引start和end之间查找字符串sub 找到,则返回最左端的索引值,未找到,则返回-1 start和end都可省略...,省略start说明从字符串开头找 省略end说明查找到字符串结尾,全部省略则查找全部字符串 source_str = "There is a string accessing example" print...(source_str.find('r')) >>> 3 count(sub, start, end) 返回字符串sub在start和end之间出现的次数 source_str = "There is...,如果maxsplit有指定值,则仅分割maxsplit个字符串 分割后原来的str类型将转换成list类型 source_str = "There is a string accessing example
split()就是将一个字符串分裂成多个字符串组成的列表。split()当不带参数时以空格进行分割,当代参数时,以该参数进行分割。...我的理解方式是,当带参数时,我们得把字符串想象成一块五花肉,我们要做 一件奇葩的事情,就是将肥肉丢到垃圾桶,把瘦肉留下。 ...这样按照上述的方法就会切出 空气,就是列表中我们看到的'', 空字符串元素。 ...如'iisongiiihuaniiiigongi',当第一刀下去的时候,第一个i被丢到了垃圾桶, 而刀刃的左边什么都没有,所以列表的第一个元素就是'',空字符串元素。 ...直到切到最后,整坨肉就只剩下一个i了,使用最后一刀下去i被切掉了,刀刃的左边此时也 什么都没有了,所以最后一个元素任然是空字符串。
1、问题背景当使用Python类时,可以使用构造函数和析构函数来初始化和清理类实例。构造函数在创建类实例时自动调用,而析构函数在删除类实例时自动调用。...构造函数__init__在Person类的实例被创建时被调用,它将类实例的name属性设置为传入的参数,并将类实例的人口计数population加1。...析构函数__del__在Person类的实例被删除时被调用,它将类实例的人口计数population减1。...问题是,如果我在程序中显式地删除Person类的实例,析构函数__del__是否会被自动调用,或者我是否需要在“main”程序/类中添加一些东西,如上面的代码示例所示?...del__在Python中并不是一个“受宠”的孩子。您会注意到sys.exit()文档没有指定在退出之前是否收集垃圾,并且有很多奇特的问题。
String是Java中的类,它提供一些预定义的方法,这些方法使基于字符串的问题解决方案更加容易。 我们不需要为每个操作编写代码,我们只需使用其方法即可。 ...在这种情况下,字符串是相同的,但字符不是相同的,但此函数仍将返回“ true”。 ...此函数用于从字符串的第 N 个索引中获取字符。 请记住,字符串的索引从0开始。 ...此函数用于获取任何子字符串的起始索引。 在这里,如果子字符串s2存在于字符串s1中 ,它将返回子字符串s2的起始位置(索引)。 如果字符串中不存在子字符串,则返回-1 。 ...此函数用于从字符串中获取子字符串。 在这里,函数substring()将返回从第 N 个索引到第(M-1) 个索引的子字符串。
字符串的find与index函数 功能 find与index都是返回你想寻找的成员的位置 用法 string.find(item) -> item: 你想查询的元素,返回一个整形 string.index...(item) -> item: 你想查询的元素,返回一个整形或者报错 Ps:字符串里的位置是从左向右,以0开始的....区别 如果find找不到元素,会返回-1 如果index找不到元素,会导致程序报错 代码 # coding:utf-8 info = 'python is a good code' result =...print(str1.find("is")) print(str1.find("is", 10, 15)) print(str1.find("is", 9))# coding:utf-8 info = 'python