首页 > 编程语言 >【python】类的特殊成员

【python】类的特殊成员

时间:2024-08-21 22:48:00浏览次数:10  
标签:__ 特殊 name python 成员 iter age Foo self

  • 上文介绍了Python的类成员以及成员修饰符,从而了解到类中有字段、方法和属性三大类成员,并且成员名前如果有两个下划线,则表示该成员是私有成员,私有成员只能由类内部调用。无论人或事物往往都有不按套路出牌的情况,Python的类成员也是如此,存在着一些具有特殊含义的成员,详情如下:
__init__    类()自动执行
__del__
__call__    对象(),类()() 自动执行
__int__     int(obj)
__str__     str(obj)

__add__
__dict__   #将对象中封装的所有内容通过字典的形式返回

__getitem__   切片或者索引
__setitem__
__delitem__

__iter__
    如果类中有__iter__方法,对象===》》可迭代对象
    对象.__iter__() 的返回值:迭代器
    for循环,迭代器,next方法
    for循环,可迭代对象,对象.__iter__() ,迭代器,next方法
    1、执行Li对象的类Foo类中的__iter__方法,并获取其返回值
    2、循环上一步中返回的对象
  • 1.call,对象后面加括号,触发执行。
class Foo:
    def __init__(self):
        print('init')
    def __call__(self, *args, **kwargs):
        print('call')
obj = Foo()
obj()   #对象()自动执行__call__方法

-2.str,如果一个类中定义了__str__方法,那么在打印 对象 时,默认输出该方法的返回值。

class Foo:
    def __init__(self,name,age):
        self.name = name
        self.age = age
    def __str__(self):
        return '%s-%s'%(self.name,self.age)
obj = Foo('xwl',23)
print(obj)    #print(str(obj))--->>str(obj)--->>obj中的__str__,并获取返回值
  • 3.dict,类或对象中的所有成员
class Foo:
    """
        描述
    """
    def __init__(self,name,age):
        self.name = name
        self.age = age
obj = Foo('xwl',18)
b = obj.__dict__   # {'name': 'xwl', 'age': 18}
print(b)
ret = Foo.__dict__
print(ret)
#{'__module__': '__main__', '__doc__': '\n        描述\n    ', 
# '__init__': <function Foo.__init__ at 0x000002AA9219C820>, '__dict__': <attribute '__dict__' of 'Foo' objects>, 
# '__weakref__': <attribute '__weakref__' of 'Foo' objects>}

-4.getitemsetitemdelitem,用于索引操作,如字典。以上分别表示获取、设置、删除数据

class Foo:
    def __init__(self,name,age):
        self.name = name
        self.age = age
    def __getitem__(self, item):
        return item+10
    def __setitem__(self, key, value):
        print(key,value)
    def __delitem__(self, key):
        print(key)
Li = Foo('xwl',18)
r = Li[1]   #自动执行Li对象中的__getitem__方法
print(r)    # 11
Li[100] = 'dasdfd'   #自动执行Li对象中的__setitem__方法    # 100 dasdfd
del Li[999]             #自动执行Li对象中的__delitem__方法   # 999
  • 5.iter ,用于迭代器,之所以列表、字典、元组可以进行for循环,是因为类型内部定义了 iter
class Foo:
    def __init__(self,name,age):
        self.name = name
        self.age = age
    def __iter__(self):
        return iter([11,22,33,44])
Li = Foo('xwl',18)
#如果类中有__iter__方法,对象===》》可迭代对象
#对象.__iter__() 的返回值:迭代器
#for循环,迭代器,next方法
#for循环,可迭代对象,对象.__iter__() ,迭代器,next方法
#1、执行Li对象的类Foo类中的__iter__方法,并获取其返回值
#2、循环上一步中返回的对象
for i in Li:
    print(i)

标签:__,特殊,name,python,成员,iter,age,Foo,self
From: https://www.cnblogs.com/xwltest/p/18372719

相关文章

  • 【自动化测试必学语言】python:UnitTest框架
    目录介绍框架什么是UnitTest框架?为什么使用UnitTest框架?UnitTest核心要素(unitest的组成部分)1.TestCase(最核心的模块) 2.TestSuite3.TestRunner4.TestLoader5.FixtureTestCase(测试用例)问题1 代码文件的命名不规范问题2代码运行没有结果 问题3没有找到用例......
  • 学习python基础二之python基本图形绘制
    1.课前实例  1.1蟒蛇绘制importturtleast#turtle库取别名为tt.setup(650,350,200,200)t.penup()t.fd(-250)t.pendown()t.pensize(25)t.pencolor("purple")t.seth(-40)foriinrange(4):t.circle(40,80)t.circle(-40,80)t.circle(40,80/2......
  • 【python】面向对象之类成员(属性)
    1.属性的定义1.1:属性的定义有两种方式:装饰器即:在方法上应用装饰器静态字段即:在类中定义值为property对象的静态字段1.2:装饰器方式在类的普通方法上应用@property装饰器经典类classGoods:@propertydefprice(self):return"xwl"#######......
  • Python程序设计现代方法1课后习题1Python 开发概述
    Python程序设计现代方法1课后习题1Python开发概述1.整数求和。输入整数n,计算1~n之和。defsum_of_integers(n):returnsum(range(1,n+1))n=int(input("请输入整数n:"))print(f"1~{n}的和为:{sum_of_integers(n)}")2.整数排序。输入三个整数,把这三个数由......
  • Python被远程主机强制关闭后怎么自动重新运行进程
    要实现Python程序在被远程主机强制关闭后能够自动重新运行,我们可以采用几种方法,但最直接且常用的方法之一是结合操作系统级的工具或脚本。在Linux系统中,我们可以使用cron作业或者systemd服务来实现这一功能;在Windows系统中,可以使用任务计划程序。但在这里,为了提供一个跨平台的、更......
  • 【python】面向对象之类成员(字段,方法)
    1.类的成员可以分为三大类:字段、方法和属性注:所有成员中,只有普通字段的内容保存对象中,即:根据此类创建了多少对象,在内存中就有多少个普通字段。而其他的成员,则都是保存在类中,即:无论对象的多少,在内存中只创建一份。2.字段字段包括:普通字段和静态字段,他们在定义和使用中有......
  • 【python】面向对象之继承
    1.什么是继承?通过继承,我们可以从既有的类上衍生出新的类。如果程序的需求为仅修改或删除某项功能,此时不需要将该类的成员数据及成员函数重新写一遍,只需要“继承”原先已定义好的类就可以产生新的类了。继承是指将现有类的属性和行为,经过修改或重写(Override)之后,就可产生出拥有......
  • Python 正则表达式详解 带例题演示
    Python正则表达式正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。Python自1.5版本起增加了re模块,它提供Perl风格的正则表达式模式。re模块使Python语言拥有全部的正则表达式功能。compile函数根据一个模式字符串和可选的标志......
  • 【学习笔记】 陈强-机器学习-Python-Ch11 决策树(Decision Tree)
    系列文章目录监督学习:参数方法【学习笔记】陈强-机器学习-Python-Ch4线性回归【学习笔记】陈强-机器学习-Python-Ch5逻辑回归【课后题练习】陈强-机器学习-Python-Ch5逻辑回归(SAheart.csv)【学习笔记】陈强-机器学习-Python-Ch6多项逻辑回归【学习笔记及课后......
  • 【python】面向对象之封装
    一:面向对象编程有三大特性:封装、继承、多态二:其中最重要的一个特性就是封装。封装指的就是把数据与功能都整合到一起三:什么是封装?1.数据角度讲,将一些基础数据类型复合成一个自定义类型2.行为角度讲,向类外提供必要的功能,隐藏实现的细节3.设计角度分而治之将一个......