博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python学习week7_映射
阅读量:4708 次
发布时间:2019-06-10

本文共 1588 字,大约阅读时间需要 5 分钟。

映射:通过用户输入的字符串调用对象的属性和方法。

调用时使用对象真实的方法名和属性名,***attr()的参数使用的是用户输入的字符串,由此完成用户输入的字符串和对象实际属性和方法的连接。

hasattr(obj,name_str)  判断对象obj里面是否有对应的name_str字符串的方法;

getattr(obj,name_str)  根据字符串去获取obj对象里的对应的方法的内存地址;

 

class Person(object):    def __init__(self,name):        self.name=name    def eat(self,food):        print('%s is eating '%self.name,food)       #注意此处的用法p1=Person('刚田武')choice=input('please input:').strip()if hasattr(p1,choice):    func=getattr(p1,choice)    func('包子') 运行后输入eat,输出为: 刚田武 is eating  包子 如果输入的是name,程序报错,func被赋值p1.name,是属性值,不能被调用

 

 setattr(obj,'name_str',z)  相当于obj.name_str=z

用来设置属性值时:

class Person(object):    def __init__(self,name):        self.name=name    def eat(self,food):        print('%s is eating '%self.name,food)       #注意此处的用法def laugh(self):    print('%s is laughing'%self.name)p1=Person('刚田武')choice=input('please input:').strip()if hasattr(p1,choice):    setattr(p1,choice,'胖虎')print(p1.name)运行后,输入name,输出为:胖虎

 用来设置成方法时:

class Person(object):    def __init__(self,name):        self.name=name    def eat(self,food):        print('%s is eating '%self.name,food)       #注意此处的用法def laugh(self):    print('%s is laughing'%self.name)p1=Person('刚田武')choice=input('please input:').strip()if hasattr(p1,choice):    setattr(p1,choice,'胖虎')else:    setattr(p1,choice,laugh)    p1.talk(p1)运行,只有当输入talk时,程序正常运行,输出为:刚田武 is laughing
把:else:    setattr(p1,choice,laugh)    p1.talk(p1)修改成:else:    setattr(p1,choice,laugh)    func =getattr(p1,choice)    func(p1)输入任意,都可以执行laugh()方法

delattr(obj,name_str)  删除obj.name_str属性

 

转载于:https://www.cnblogs.com/zhhy236400/p/9786533.html

你可能感兴趣的文章
feign传输String json串 自动转义 \ 解决方法
查看>>
本站已稳定运行了XX天,网页时间显示功能实现方法
查看>>
实习的开始阶段
查看>>
搭建第一个node服务器
查看>>
团队冲刺个人总结8
查看>>
Asp.Net Mvc Area二级域名
查看>>
requirements基本使用
查看>>
C++ Boost入门
查看>>
android:intent flags
查看>>
Vue疑难杂症
查看>>
spring boot 错误处理之深度历险
查看>>
MySQL对于有大量重复数据表的处理方法
查看>>
Android应用开发学习笔记之多线程与Handler消息处理机制
查看>>
ubuntu 设置环境变量
查看>>
JSTL详解(一)
查看>>
Manacher 算法
查看>>
Linux磁盘及文件系统(三)Linux文件系统
查看>>
SDWebImage源码阅读(二)NSData+ImageContentType
查看>>
别在最好的年纪辜负最好的自己
查看>>
微软品牌形象广告 不是一般的优秀
查看>>