首页 > 其他分享 >面向对象的魔法方法

面向对象的魔法方法

时间:2022-11-08 16:25:10浏览次数:26  
标签:__ 触发 obj 对象 self 魔法 面向对象 方法 def

面向对象的魔法方法(格式都是双下)

方法 作用
init 对象添加独有数据的时候自动触发
str 对象被执行打印操作的时候自动处罚
call 对象加括号调用的时候自动触发
getattr 对象点不存在的名字的时候自动触发
getattrbute 对象点名字名字就触发,有他不会执行__getattr__
setattr 给对象添加或者修改数据的时候自动触发,对象.名字 = 数据值
enter 当对象被当做with上下文管理操作的开始自动触发,返回什么as后面的变量名接收什么
exit with上下文管理语法运行完毕之后自动触发(子代码结束)

魔法方法笔试题

1.补全下列代码使得运行不报错即可
 class Context:
        pass
    with Context() as f:
        f.do_something()
"""解决方法"""
class Context:
    def do_something(self):
        pass

    def __enter__(self):
        return self   # 这里返回什么,f接收的就是什么

    def __exit__(self, exc_type, exc_val, exc_tb):
        pass


with Context() as f:
    f.do_something()  # f点就是对象点
2.自定义字典类型并让字典能够通过句点符的方式操作
"""解决方法"""
# 这个方法要用到继承,继承字典
class My_dict(dict):
    def __setattr__(self, key, value):  # __setattr__是对象在添加或者修改数据的时候触发
        self[key] = value  # 修改点名字修改或者添加数据触发的过程,改为字典的索引取值
    def __getattr__(self, item):  # __getarr__是在对象点不存在的名字的时候触发
        return self.get(item)  # 修改点不存在名字的触发改为get获取

obj = My_dict()
obj.name = 'jason'
obj.pws = 18
obj.hobby = 'read'
print(obj)

标签:__,触发,obj,对象,self,魔法,面向对象,方法,def
From: https://www.cnblogs.com/zhanghong1229/p/16870094.html

相关文章

  • 面向对象之元类
    元类简介"""推导步骤1:如何查看数据的数据类型"""s1='helloword'l1=[11,22,33,44,55]d1={'name':'jason'}t1=(11,22,33,44)p......
  • python获取程序执行文件路径方法
    python脚本打包成exe文件获取当前路径importosimportsys#确定应用程序是脚本文件还是被冻结的exeifgetattr(sys,'frozen',False):#获取应用程序exe的路径......
  • 使用axios请求,前端数字long类型精度问题解决方法
    今天开发遇到个问题,服务器后端的Long类型数据,传到前端会出现精度丢失,如:164379764419858435,前端会变成164379764419858430。在浏览器中做测试可知,这就是一个精度丢失的问题。......
  • 5种常见的异步编程的方法
    1、回调函数/*利用回调函数执行异步操作*/getCallBackData(callback){//把函数作为参数传递进去setTimeout(()=>{letdata='thisiscallbackdata';......
  • 4 种将字符串转换为字符数组的方法
    英文|https://javascript.plainenglish.io/4-ways-of-transforming-a-string-into-an-array-of-characters-8649e3abfd8d翻译|杨小二在某些情况下,我们希望将字符串转换......
  • 4种在JavaScript中获取URL中参数值的方法
    方法一:正则法functiongetQueryString(name){varreg=newRegExp('(^|&)'+name+'=([^&]*)(&|$)','i');varr=window.location.search.substr(1).match(re......
  • antdv (Ant Design of Vue) 复杂表单验证问题解决方法
    我们知道,在简单的表单中,都是一项一项往下排列的,验证的时候也按照字段一一对把规则写好就能验证,如下图  但是遇到了复杂场景的表单验证,比如一项由多个input、checkbox......
  • 6种JavaScript判断数组是否包含某个值的方法
    我们在项目开发过程中,经常会要检查一个数组(无序)是否包含一个特定的值?这是一个在JavaScript中经常用到的并且非常有用的操作。下面给出几种实现方式。方式一:利用循环这种方......
  • 4种方法替换JavaScript里所有出现的字符串
    在JavaScript代码中出现这个字符串:"Testabctesttestabctesttesttestabctesttestabc"比如直接使用replace替换的方法,如下:str=str.replace('abc','');似乎只删......
  • Git官网下载太慢解决方法
    问题描述:官网下载Git(Git-2.25.0-64-bit时,44.3M),需要下载10几个小时时,速度几乎是超不过20KB/s,用Fixfox浏览器下载(最快10KB/s),FreeDownloadManager5(最快28KB/s),迅......