面向对象 9 反射&内置方法

反射


#反射:通过字符串映射到对象的属性
# class People:
#     country='china'
#
#     def __init__(self,name,age):
#         self.name=name
#         self.age=age
#
#     def talk(self):
#         print('%s is talking'%self.name)
#
# obj=People('egon',10)

# print(obj.name)
# print(obj.talk)

# choice=input('>>: ') #name
# print(obj.choice) #print(obj.'name')

# print(hasattr(obj,'name')) #obj.name#obj.__dict__['name']
# print(hasattr(obj,'talk'))

# print(getattr(obj,'namexxx',None))
# print(getattr(obj,'talk',None))

# setattr(obj,'sex','male')
# print(obj.sex)
#
# delattr(obj,'age')
# print(obj.__dict__)

# print(getattr(People,'country'))

#反射的应用

class Service:
    def run(self):
        while True:
            inp=input('>>:').strip()
            cmds=inp.split()

            # print(cmds)
            if hasattr(self,cmds[0]):
                func=getattr(self,cmds[0])
                func(cmds)

    def get(self,cmds):
        print('get......',cmds)

    def put(self,cmds):
        print('put.......',cmds)

obj=Service()
obj.run()

内置方法



#item系列

class Foo:
    def __init__(self,name):
        self.name=name


    def __getitem__(self, item):
        # print('getitem')
        # print(item)
        # self.__dict__['item']
        return

    def __setitem__(self, key, value):
        print('setitem')
        print(key ,value)

    def __delitem__(self, key):
        print('delitem')
        print(key)

obj=Foo('egon')

# 查看属性
#obj. 属性名
# print(obj['namexxx']) #obj.name

# 设置属性
# obj.sex='male'
# obj['sex'] ='male'#obj.name

# print(obj.__dict__)
# print(obj.sex)

# 删除属性
# del obj.name
# del obj.['name']
#
# print(obj.__dict__)


# d=dict({'name':'egon'})
# # print(isinstance(d.dict))
# print(d)


# class People:
#     def __init__(self,name,age):
#         self.name=name
#         self.age=age
#
#     def __str__(self):
#         # print('========>>str')
#         return '<name:%s,age:%s>'%(self.name,self.age)
#
# obj=People('egon',12)
# print(obj)  #res=obj.__str__()



#__del__
# f=open('settings.py')
# f.read()
#
# f.close()  #回收操作系统的资源
# print(f)

class Open:
    def __init__(self,filename):
        print('open file...')
        self.filename=filename
    def __del__(self):
        print('回收操作系统的资源:self.close()')

f=Open('settings.py')
del f #f.__del_()
print('---main---') #def f #f.__del__()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
项目:使用 JavaScript 编写的杀死幽灵游戏(附源代码) 杀死鬼魂游戏是使用 Vanilla JavaScript、CSS 和 HTML 画布开发的简单项目。这款游戏很有趣。玩家必须触摸/杀死游荡的鬼魂才能得分。您必须将鼠标悬停在鬼魂上 - 尽量得分。鬼魂在眨眼间不断从一个地方移动到另一个地方。您必须在 1 分钟内尽可能多地杀死鬼魂。 游戏制作 这个游戏项目只是用 HTML 画布、CSS 和 JavaScript 编写的。说到这个游戏的特点,用户必须触摸/杀死游荡的幽灵才能得分。游戏会根据你杀死的幽灵数量来记录你的总分。你必须将鼠标悬停在幽灵上——尽量得分。你必须在 1 分钟内尽可能多地杀死幽灵。游戏还会显示最高排名分数,如果你成功击败它,该分数会在游戏结束屏幕上更新。 该游戏包含大量的 javascript 以确保游戏正常运行。 如何运行该项目? 要运行此游戏,您不需要任何类型的本地服务器,但需要浏览器。我们建议您使用现代浏览器,如 Google Chrome 和 Mozilla Firefox。要玩游戏,首先,单击 index.html 文件在浏览器中打开游戏。 演示: 该项目为国外大神项目,可以作为毕业设计的项目,也可以作为大作业项目,不用担心代码重复,设计重复等,如果需要对项目进行修改,需要具备一定基础知识。 注意:如果装有360等杀毒软件,可能会出现误报的情况,源码本身并无病毒,使用源码时可以关闭360,或者添加信任。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值