python 学习之:将字符串转换成变量,调用该变量实例对象的方法
时间:2022-07-24
本文章向大家介绍python 学习之:将字符串转换成变量,调用该变量实例对象的方法,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
一、前言
今天在交流群里看到这样的一个学习案例,就这样说吧,先定义一个类:
class Dog():
"""模拟小狗的简单动作"""
def __init__(self, name, age): # init 前后都是两根下划线
"""初始化 name 和 age"""
self.name = name
self.age = age
def sit(self):
"""小狗被命令时蹲下"""
print(self.name.title() + " is now sitting !")
def roll(self):
"""小狗被命令时打滚"""
print(self.name.title() + " rolled over !")
然后我们实例化一些对象:
my_dog = Dog('小黑', 6)
your_dog = Dog('小白', 12)
she_dog = Dog('小希', 18)
我们定义一个list:
peoples = ['my', 'your', 'she']
我们现在想的就是,将peoples里面的这些变量进行拼接,得到上面我们实例化的对象,然后执行这些对象里面的sit和roll的方法:
for people in peoples:
people_dog = people + "_dog"
people_dog.sit()
people_dog.roll()
可以看到,这样写,只是将集合里面的字符串进行了拼接,不能够实现对应成上方的变量名,所以我们使用编辑器就可以看到sit()和roll()是显示不存在的。查资料得到,我们可以使用python3自带的方法进行转换,就是将字符串转换成当前的变量名:
我查看到的是有三种方法:locals()[varName], vars()[varName], eval(varName)
这里我只写eval()这种方式:
for people in peoples1:
people_dog = eval(people + "_dog")
people_dog.sit()
people_dog.roll()
这时,我们就会看到sit()和roll()方法时可以执行的。这就是简单的字符串转换成变量名的方法。
二、完整代码:
class Dog():
"""模拟小狗的简单动作"""
def __init__(self, name, age): # init 前后都是两根下划线
"""初始化 name 和 age"""
self.name = name
self.age = age
def sit(self):
"""小狗被命令时蹲下"""
print(self.name.title() + " is now sitting !")
def roll(self):
"""小狗被命令时打滚"""
print(self.name.title() + " rolled over !")
my_dog = Dog('小黑', 6)
your_dog = Dog('小白', 12)
she_dog = Dog('小希', 18)
peoples1 = ['my', 'your', 'she']
for people in peoples1:
people_dog = eval(people + "_dog")
people_dog.sit()
people_dog.roll()
print(people.title() + " dog's name is " + people_dog.name.title() + "!")
print(people.title() + ' dog is ' + str(people_dog.age) + " years old !")
PS:参考博客:https://blog.csdn.net/mlgglm/article/details/52472123
这三种方法的区别:https://blog.csdn.net/ztf312/article/details/51122027
- 10.12 firewalld和netfilter
- 10.11 Linux网络相关
- 利用Crypto++实现RSA加密算法
- 重学javascript 红皮高程(6)
- WriteUp分享 | LCTF的一道preg_match绕过+出题人的锅
- 利用crypto++库实现AES加密算法
- Android之倒计时CountdownTimer用法
- WriteUp分享 | LCTF的一道padding oracle攻击+sprintf格式化字符串导致的SQL注入
- 10.27 target介绍
- Android 之游戏开发流程
- shell脚本后台运行
- Android的.so文件你需要知道那些知识
- xshel配色方案
- cocos2dx-v3.5 2048 (一): 项目架构
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Cordova 运行 Web 应用
- SSH 端口转发小结
- Hive实现自增序列及元数据问题
- 手工将项目升级至 Angular 9 记录
- 备份和恢复 timescaledb 的超级表 (hypertables)
- CVE-2020-14644 weblogic iiop反序列化漏洞
- Ubuntu 17.10 安装折腾记录
- charles工具使用
- 干货 | 从0到1,搭建一个体系完善的前端React组件库
- LeetCode 01两数之和&02两数相加
- 给GitHub "彩蛋" readme 生成自定义统计信息
- Android |《看完不忘系列》之okhttp
- pt-osc改表过程中的中文乱码问题
- Hive Query生命周期 —— 钩子(Hook)函数篇
- python快速排序