当前位置: 首页 > news >正文

电商类网站设计模板/百度推广外推联系方式

电商类网站设计模板,百度推广外推联系方式,国家鼓励乡镇级政府网站建设,网站建设必须提供良好的用户体验"魔法"方法 Python 中的魔法方法(Magic Methods) 是以双下划线开头和结尾的特殊方法(例如 __init__, __str__),用于定义类的特定行为(如运算符重载、迭代、上下文管理等)。 在 pytho…

"魔法"方法

Python 中的魔法方法(Magic Methods) 是以双下划线开头和结尾的特殊方法(例如 __init____str__),用于定义类的特定行为(如运算符重载、迭代、上下文管理等)。

python 中方法名如果是 __xxxx__() 的,那么就有特殊的功能,因此叫做 魔法 方法:
__init__() 方法
__init__() 方法,在创建一个对象时默认被调用,不需要手动调用
__init__(self) 中,默认有1 个参数名字为 self ,如果在创建对象时传递了 2 个实参,那么 __init__(self) 中出了 self作为第一个形参外还需要 2 个形参,例如 __init__(self,x,y)
__init__(self) 中的self 参数,不需要开发者传递, python 解释器会自动把当前的对象引用传递进去
__str__(self) 方法
__str__(self) 方法,当使用print 输出对象的时候,只要自己定义了 __str__(self) 方法,那么就会打印从在这个方法中 return 的数据

作用、调用和命名

  • 核心作用:魔法方法让自定义类具备与内置类型一致的行为。

  • 调用方式:通常由 Python 解释器隐式调用(如 a + b 触发 __add__)。

  • 命名规范:严格遵循双下划线开头和结尾的格式(如 __xxx__)。

最佳实践

  1. 优先实现必要的魔法方法(如 __init____str__)。

  2. 保持行为一致性:例如,实现 __eq__ 时最好同时实现 __hash__

  3. 避免滥用运算符重载,确保操作符行为符合直觉。


    常见的魔法方法分类及说明:

    1. 初始化与构造

    方法说明示例
    __new__(cls, ...)创建实例时调用(先于 __init__),返回实例对象。obj = MyClass()
    __init__(self, ...)初始化实例属性,构造对象时调用。def __init__(self, x): self.x = x
    __del__(self)对象被销毁时调用(垃圾回收触发)。del obj

    2. 运算符重载

    方法对应的运算符或操作示例
    __add__(self, other)+a + b → a.__add__(b)
    __sub__(self, other)-a - b → a.__sub__(b)
    __mul__(self, other)*a * b → a.__mul__(b)
    __eq__(self, other)==a == b → a.__eq__(b)
    __lt__(self, other)<a < b → a.__lt__(b)
    __str__(self)定义对象的字符串表示(供 print() 或 str() 使用)。print(obj) → 调用 obj.__str__()
    __repr__(self)定义对象的官方字符串表示(供 repr() 或交互式环境显示)。repr(obj) → obj.__repr__()
    __bool__(self)定义对象的布尔值(if obj: 时触发)。if obj: → obj.__bool__()

    3. 容器类行为

    方法说明示例
    __len__(self)返回容器长度(len(obj) 时调用)。len(obj) → obj.__len__()
    __getitem__(self, key)获取元素(obj[key] 时调用)。obj[0] → obj.__getitem__(0)
    __setitem__(self, key, value)设置元素(obj[key] = value 时调用)。obj[0] = 5 → obj.__setitem__(0, 5)
    __iter__(self)返回迭代器对象(for x in obj 时调用)。iter(obj) → obj.__iter__()
    __next__(self)迭代时获取下一个值(需与 __iter__ 配合使用)。next(iter(obj))
    __contains__(self, item)检查是否包含元素(item in obj 时调用)。5 in obj → obj.__contains__(5)

    4. 上下文管理

    方法说明示例
    __enter__(self)进入上下文时调用(with 语句开始时)。with obj as x: → obj.__enter__()
    __exit__(self, exc_type, exc_val, traceback)退出上下文时调用(清理资源)。with 块结束后调用

    5. 属性访问与描述符

    方法说明示例
    __getattr__(self, name)访问不存在的属性时调用。obj.x(若 x 不存在)
    __setattr__(self, name, value)设置属性时调用。obj.x = 5 → obj.__setattr__('x', 5)
    __delattr__(self, name)删除属性时调用。del obj.x → obj.__delattr__('x')
    __getattribute__(self, name)访问任何属性时调用(优先级高于 __getattr__)。obj.x → obj.__getattribute__('x')
    __dir__(self)返回对象的属性列表(dir(obj) 时调用)。dir(obj) → obj.__dir__()

    6. 描述符协议(用于自定义属性行为)

    方法说明
    __get__(self, instance, owner)获取属性值时调用(用于描述符类)。
    __set__(self, instance, value)设置属性值时调用(用于描述符类)。
    __delete__(self, instance)删除属性时调用(用于描述符类)。

    7. 反射与自省

    方法说明
    __instancecheck__(self, instance)自定义 isinstance(instance, cls) 的行为。
    __subclasscheck__(self, subclass)自定义 issubclass(subclass, cls) 的行为。

    8. 数值类型扩展

    方法说明
    __int__(self)定义对象转换为整数时的行为(int(obj))。
    __float__(self)定义对象转换为浮点数时的行为(float(obj))。
    __complex__(self)定义对象转换为复数时的行为。

    9. 协程与异步

    方法说明
    __await__(self)定义异步迭代器的行为(async for 中使用)。
    __aiter__(self)返回异步迭代器对象(async for 时调用)。
    __anext__(self)异步迭代时获取下一个值。

    其他重要方法

    方法说明
    __call__(self, ...)允许实例像函数一样被调用(obj() 时触发)。
    __slots__限制类实例的属性(节省内存)。
    __hash__(self)定义对象的哈希值(hash(obj) 时调用,用于字典键或集合元素)。

http://www.whsansanxincailiao.cn/news/31970442.html

相关文章:

  • 设计兼职网站推荐/百度seo指南
  • vue做的网站域名汇总/企业管理培训课程网课
  • 怎么查公司网站有没有被收录/手机端百度收录入口
  • 网站建设undefined/友情链接平台广告
  • 楚雄州城乡建设局网站/推广赚钱的平台
  • 网站营销的流程/武汉seo系统
  • 网站建设三合一 500元/百度营销登录
  • 毕业设计做系统和网站有什么区别/惠州seo外包公司
  • 网站制作app/苏州搜索引擎排名优化商家
  • 如何查找网站所有页面/关键词优化的主要工具
  • 如何用vps做网站/广州百度关键词推广
  • 个人可以做网站么/怎么做宣传推广
  • 做海报找素材的网站/seo教程有什么
  • 河南网站建设公司排名/汽车营销策划方案ppt
  • 怎样办网站做宣传/网站搜索优化方法
  • 想自己做网站做推广/seo是什么岗位
  • 电子商务网站如何推广/系统清理优化工具
  • 广东购物网站建设/企业文化培训
  • 网站建设的资源整合与系统设计/郑州网站seo顾问
  • 网站建设师薪资/软文营销网站
  • 卖汽车配件怎么做网站/百度关键词
  • 杭州五旋科技网站建设怎么样/网站seo优化的目的
  • 企业邮箱怎么申请的/上海seo推广方法
  • 滨海做网站的公司/刷推广链接
  • 重庆网站建设报价/关键词优化哪个好
  • 昆明大型网站建设费用/百度指数怎么分析
  • 江阴做网站/关键词排名是什么意思
  • 一级a做爰片阿v祥仔网站/东营seo网站推广
  • cnzz 网站域名怎么填/免费html网站制作成品
  • 网站最下端怎么做/石家庄网站建设案例