python_面向对象中的特殊成员

Python类中的常用特殊成员简介及示例 除了一般方法和属性外,类还有一些特殊的成员,这些特殊的成员通常以双下划线开头和结尾,如__init__,__str__等,它们被称为特殊成员或魔术方法。当一个新的对象被创建时,Python会自动调用__init__方法,传入self参数,创建一个空对象self,并根据类定义的变量和方法初始化对象。Python类中的特殊成员在很多情况下可以方便地为我们提供更强大的类定义和操作方法,这些特殊成员都具有一定的规则和限制,请在使用时注意相关规范,以便开发出更加规范化和易于维护的代码。 阅读详情

 一、几个常见的特殊成员

# 都只是语法,无特殊意义
class Foo(object):
    def __init__(self,a1,a2):
        self.a1 = a1
        self.a2 = a2

    def __call__(self,*args,**kwargs):
        print(11111,args,kwargs)
        return 123

    def __getitem__(self, item):
        print(item)
        return 8

    def __setitem__(self, key, value):
        print(key,value,111111111)

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

    def __add__(self, other):
        return self.a1+ other.a2

    def __enter__(self):
        print('111')
        return 999

    def __exit__(self, exc_type, exc_val, exc_tb):
        print('222')

# 1.类名() 自动执行 __init__
obj = Foo(1,2)
# 2.对象() 自动执行 __call__
res=obj(6,4,2,k1=456)
print(res)
print("#"*20)
# 3.对象[] 自动执行 __getitem__
ret= obj['yu']
print(ret)
print("#"*20)
# 4.对象['xx']=11 自动执行 __setitem__
obj['k1'] = 123
print("#"*20)
# 5.del 对象[xx] 自动执行 __delitem__
del obj['aaa']
print("#"*20)
# 6.对象+对象 自动执行 __add__
obj1 = Foo(1,2)
obj2 = Foo(88,99)
ret=obj2+obj1
print(ret)
print("#"*20)
# 7.with 对象 自动执行  __enter__ / __exit__
with obj as f:
    print(f)
    print('内部代码')

# 8.真正的构造方法
class Foo(object):
    def __init__(self, a1, a2): # 初始化方法
        """
        为空对象进行数据初始化
        :param a1:
        :param a2:
        """
        print(1)
        self.a1 = a1
        self.a2 = a2
    def __new__(cls,*args,**kwargs): # 构造方法
        """
        创建一个空对象
        :param args:
        :param kwargs:
        """
        print(2)
        v1=object.__new__(cls)  # Python内部创建一个当前类的象(初创时内部是空的.)
        print(v1)
        return v1

obj = Foo(1,2)
print(obj)

 

二、特殊成员的补充

1、__str__

     __doc__

代码: 

class Foo(object):
    """
    Foo类
    """
    def __init__(self):
        pass
    def func(self):
        pass
    def __str__(self):  # __str__(self)
        return "F1"

obj = Foo()
print(obj,type(obj))
print(obj.__doc__)      # __doc__

结果: 

 

 

2、__dict__

class Foo(object):
    def __init__(self,name,age):
        self.name = name
        self.age = age
    def func(self):
        pass

obj1 = Foo("lin",99)
obj2 = Foo("yang",89)
print(obj1.__dict__)    # {'name': 'lin', 'age': 99}
print(obj2.__dict__)    # {'name': 'yang', 'age': 89}

 

 

3、 __iter__

#l1是list类的一个对象,可迭代对象 l1 = [11,22,33,44]
l1 = [11,22,33,44]

class Foo(object):
    def __init__(self,name,age):
        self.name = name
        self.age = age
    def func(self):
        pass
    def __iter__(self):
        # return iter([11,22,33,44])
        yield 11
        yield 22
        yield 33

# obj1是Foo类的一个对象,不可迭代对象
# 如果想要把不可迭代対象 → 可迭代对象
# 1.在类中定义 __iter__ 方法
# 2.iter内部返回一个迭代器(生成器也是一种特殊迭代器)
obj1 = Foo("lin",99)
for item in obj1:
    print(item)

 

接入 deepseek 实现AI智能问诊 必须包含user角色,用于传递用户输入。system角色可选,用于设置对话背景。多轮对话需要将历史记录添加到messages中。 阅读详情

相关推荐

森林冰火人html源码,森林冰火人单人版(源码)

【实例简介】java小游戏——森林冰火人,单人游戏, 实现人物行走,跳跃,吃水晶,具有计时功能,积分功能,倒计时结束游戏失败。【实例截图】【核心代码】森林冰火人单人版├── bin│ ├── game│ │ ├── Help.class│ │ ├── Logon.class│ │ ├── Main.class│ │ ├── Mykey.class│ │ ...

weixin_42507981的博客 6203

Python面向对象中的特殊成员以及应用场景

Python面向对象编程中的特殊成员,通常被称为魔法方法(Magic Methods)或双下划线方法(Dunder Methods),它们在Python中具有特殊的意义和功能。

sheji888的专栏 579

SRS(简单实时视频服务) 笔记(5)- 视频录制

在SRS使用中实现视频录制功能。

irainsa的博客 1700

文成小盆友python-num8 面向对象中的成员,成员修饰符,特殊成员,异常处理,设计模式之单例模式...

本节主要内容: 1.面向对象中的成员 2.成员修饰符 3.特殊成员 4.异常处理 5.设计模式之单例模式 一.面向对象中的成员(类的成员) 类的成员总共可以分为3大类,每类中有不同的分支。 1.总述,基本分类 如下图所示: 类成员包括字段,方法,和属性 2.字段 如上图字段分为普通字段和静态字段,两者的使用有区别,但是最大的区别在于两者在内存中的保存位置有区别。 普通...

weixin_30337157的博客 173

uniapp+华为HBuilder X 4.29跑鸿蒙模拟器报错没有签名授权

uniapp+华为HBuilder X 4.29跑鸿蒙模拟器报错没有签名授权报错信息11:39:47.976 安装 .hap 到鸿蒙设备 ...11:39:48.517 运行所需的权限没有签名授权,请参考 配置文档11:39:48.517 安装失败。

weixin_66071584的博客 1352

LLM的MCP协议:初识MCP,搭建第一个MCP Server

MCP(Model Context Protocol),是一个开发的协议,标准化了应用程序如何为大模型提供上下文。MCP提供了一个标准的为LLM提供数据、工具的方式,使用MCP会更容易的构建Agent或者是基于LLM的复杂工作流。

Criss@陈磊 2万+

python中面向对象的特殊成员_Python面向对象特殊成员

类的特殊成员之call#!/usr/bin/env python# _*_coding:utf-8 _*_class SpecialMembers:# 类的构造方法def __init__(self):print("My Blog is Url: http://yw666.blog.51cto.com")# 对象的构造方法def __call__(self):print("My Name is: ...

weixin_39874809的博客 70

【数据集4】GSWP3数据集详解

简介GSWP3数据集

WW、forever的博客 1368

如何理解python面向对象_深入理解Python面向对象-类成员

Python是一个面向对象的语言,但是因为python语言的特性,我们大多的python程序员只是把它当做一个工具,在我们项目的实际使用中除了使用Django框架以外,其他的都是使用python最基础的方式,完全跟pythonic没有一点关系,当然主要还是因为我们能力太差。面向对象是书写各种框架的基础,python的面向对象不仅拥有通用面向对象的特性,而且还拥有一些极其强大的特性,可以让我们把它的...

weixin_39919089的博客 192

【Docker安装】Ubuntu 24.04.2 LTS系统下安装Docker环境——指定APT源安装方式

【Docker安装】Ubuntu 24.04.2 LTS系统下安装Docker环境——指定APT源安装方式

jks212454的博客 626

当AI写小说——一个被严重低估的工程化战场

摘要 AI小说创作远非简单的prompt生成,而是一项需要系统化工程管理的复杂任务。本文通过真实案例分析,揭示了当前AI写小说存在的五大核心难题:设定一致性难以维持、文风控制缺乏个性、爽感节奏难以把握、长篇记忆能力有限以及平台规则适配困难。研究显示,90%的失败案例源于错误的创作方法,主要表现为对话框式随机生成和模板式同质化创作。要实现高质量的AI小说创作,必须建立包括设定治理、记忆管理、文风校准等在内的全链路工程化体系,而非依赖单一prompt指令。只有采用系统化的人机协同方法,才能突破当前AI创作的质量

sellyogurt的博客 687

Python面向对象程序设计类变量与成员变量、类方法与成员方法用法分析

这篇文章主要介绍了Python面向对象程序设计类变量与成员变量、类方法与成员方法用法,结合实例形式较为详细的分析了类变量与成员变量、类方法与成员方法、类方法与静态方法等概念、原理及使用技巧,需要的朋友可以参考下 本文实例讲述了Python面向对象程序设计类变量与成员变量、类方法与成员方法用法。分享给大家供大家参考,具体如下: 类变量与成员变量 在类中声明的变量我们称之为类变量[静态成员变量], 在...

python多线程基础教程进阶教程 664

【AUTOSAR-DEM】-2.4-APP SWC如何读取MIL灯状态以及配置MIL灯

该篇博文将告诉您: MIL(Malfunction Indicator Lamp/Light)灯的点灯和灭灯过程; DEM模块如何配置MIL灯; APP SWC如何获取MIL灯状态。

「汽车电子助手」的博客 1712

python @修饰符_深入理解Python面向对象-类特殊成员

接上一篇 深入理解Python面向对象-类成员类成员的修饰符类的所有成员在上一篇已经做了详细的介绍,对于每一个类的成员都有两种形式:公有成员、私有成员。成员定义是以双下划线开头,就是私有成员。除了一些特殊成员除外,例如:__init__、__call__、__dict__、__del__等,剩下的都是公有成员。class Base: def __init__(self): ...

weixin_39876595的博客 179

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

python中面向对象的特殊成员_Python 面向对象--类的特殊成员

一. __new__ 和 __init____new__ : 创建对象__init__ : 初始化对象classFoo(object):def __init__(self):print("初始化对象")def __new__(cls, *args, **kwargs):print("创建对象")return object.__new__(cls)obj=Foo()#以上代码执行结果是:#创建对象#...

weixin_39857211的博客 149

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Python 第九课,面向对象进阶

面向对象是一种编程方式,此编程方式的实现是基于对类和对象的使用 类 是一个模板,模板中包装了多个“函数”供使用(可以讲多函数中公用的变量封装到对象中) 对象,根据模板创建的实例(即:对象),实例用于调用被包装在类中的函数 面向对象三大特性:封装、继承和多态 本篇将详细介绍Python 类的成员、成员修饰符、类的特殊成员。 类的成员 类的成员可以分为三大类:字...

a12085454的博客 186

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Python面向对象(15对象嵌套&特殊成员)

在基于面向对象进行编程时,对象之间可以存在各种各样的关系,例如:组合、关联、依赖等,就是各种嵌套。在Python的类中存在一些特殊的方法,这些方法都是。数据连接,每次对远程的数据进行操作时候都必须经历。1.连接 = 连接数据库。

weixin_45213849的博客 1758

【Rollo的Python之路】Python 面向对象 (六) 特殊成员

Python 面向对象 :特殊成员 1.0.1 __call__ :__call__()的本质是将一个类变成一个函数(使这个类的实例可以像函数一样调用) 直接用obj()调用: class Roo: def __init__(self): print('init') def __call__(self, *args, **kwargs)...

weixin_30729609的博客 119

python中面向对象的特殊成员_Python面向对象(特殊成员)

day25__init__ 类()自动执行__del____call__ 对象() 类()() 自动执行__int__ int(对象)__str__ str()特殊成员1 classFoo:2 def __init__(self):3 print('init')45 def __call__(self, *argc, **kwa...

weixin_39906114的博客 87

Python 学习笔记(10)面向对象特殊成员

Python 学习笔记(10)面向对象特殊成员 文章目录Python 学习笔记(10)面向对象特殊成员10.1 限制添加实例属性及实例方法10.2 type()函数动态创建类10.3 MetaClass元类10.4 枚举类10.5 类的特殊成员10.5.1 `__new__()`10.5.2 `__repr__()`10.5.3 `__del__()`10.5.4 `__dir__()`10.5.5 `__dict__()`10.5.6 `hasattr()/getattr()/setattr()`10.

qq_42914862的博客 253

python中表示类的公有成员_深入理解Python面向对象-类特殊成员

接上一篇 深入理解Python面向对象-类成员类成员的修饰符类的所有成员在上一篇已经做了详细的介绍,对于每一个类的成员都有两种形式:公有成员、私有成员。成员定义是以双下划线开头,就是私有成员。除了一些特殊成员除外,例如:__init__、__call__、__dict__、__del__等,剩下的都是公有成员。class Base: def __init__(self): ...

weixin_30996983的博客 441

python 面向对象(进阶篇)

http://www.cnblogs.com/wupeiqi/p/4766801.html http://3060674.blog.51cto.com/3050674/1736959 上一篇《Python 面向对象(初级篇)》文章介绍了面向对象基本知识: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用类 是一个模板,模板中包装了多个“函数”供使

happyjxt的专栏 862

python————面向对象(二)

面向对象 目录面向对象一、面向对象的理解1、python面向对象的重要术语:2、函数和面向对象编程的区别二、封装、继承、多态1、封装(Encapsulation)总结 一、面向对象的理解 简称:OOP,是一种编程的思想。OOP把对象当成一个程序的基本单元,一个对象包含了数据和操作数据的函数。面向对象的出现极大的提高了编程的效率,使其编程的重用性增高。 1、python面向对象的重要术语: 1、多态(polymorphism):一个函数有多种表现形式,调用一个方法有多种形式,但是表现出的方法是不一样的。 2、

langchaop的博客 243

Python 面向对象 2

python 面向对象(进阶篇) 上一篇《Python 面向对象(初级篇)》文章介绍了面向对象基本知识: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个“函数”供使用(可以讲多函数中公用的变量封装到对象中) 对象,根据模板创建的实例(即:对象),实例用于调用被包装在类中的函数 面向对象三大特性:...

weixin_30760895的博客 68

面向对象进阶

面向对象进阶 面向对象是一种编程方式,此编程方式的实现是基于对类和对象的使用 类 是一个模板,模板中包装了多个“函数”供使用(可以讲多函数中公用的变量封装到对象中) 对象,根据模板创建的实例(即:对象),实例用于调用被包装在类中的函数 面向对象三大特性:封装、继承和多态 本篇将详细介绍Python 类的成员、成员修饰符、类的特殊成员。...

batistuta1977的博客 146

python面向对象的三大特点,python面向对象六大原则

1)编程的几种方式我们知道编程方式分为面向过程编程、函数式编程、以及面向对象编程,刚开始我们接触编程时所写的代码都是面向过程;面向过程的程序设计:核心是过程,指的是解决问题的步骤,比如先干什么再干什么;这种设计好比精心设计好的一条流水线,是一种机械式的思维方式;优点:复杂度的问题流程化,进而简单化;缺点:几乎没有可扩展性,程序只要稍微改动则牵制全身;函数式编程的设计:把问题分解为一个函数的集合,函数仅接受输入并产生输出,不包含任何能影响产生输出的内部状态。

S1112_的博客 1089
上一篇: python_主动调用其他类的成员
下一篇: 三点的最近距离
python_198
博客等级 码龄3年 359粉丝 112原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

python_198

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值