首页 > 其他分享 >重写len函数对象魔术方法

重写len函数对象魔术方法

时间:2024-03-17 15:00:24浏览次数:19  
标签:__ len 魔术 dict print MyClass 重写 def

### len 魔术方法

'''
触发时机:使用len(对象)的时候自动触发
功能:用于检测对象中或者类中某个内容的个数
参数:一个self接受当前对象
返回值:必须返回整型
'''

len(对象) => 类中的所有自定义成员

class MyClass():
pty1 = 1
pty2 = 2
__pty3 = 3

def func1():
	pass
def func2():
	pass
def __func3():
	pass
	
def __len__(self):
	# 以__开头并且以__结尾的成员过滤掉;
	return len( [  i for i in MyClass.__dict__ if not (  i.startswith("__") and i.endswith("__")  )  ] ) 

obj = MyClass()
print(len(obj))

"""
代码原型;
print(MyClass.dict)
lst = []
for i in MyClass.dict:
print(i , type(i))
if not ( i.startswith("") and i.endswith("") ):
lst.append(i)
print(len(lst))
"""

"""

抛离系统自带的魔术方法
{
'module': 'main',
'pty1': 1,
'pty2': 2,
'_MyClass__pty3': 3,
'func1': <function MyClass.func1 at 0x7f6898431378>,
'func2': <function MyClass.func2 at 0x7f6898431400>,
'_MyClass__func3': <function MyClass.__func3 at 0x7f6898431488>,
'len': <function MyClass.len at 0x7f6898431510>,
'dict': <attribute 'dict' of 'MyClass' objects>,
'weakref': <attribute 'weakref' of 'MyClass' objects>,
'doc': None
}
"""

标签:__,len,魔术,dict,print,MyClass,重写,def
From: https://www.cnblogs.com/wbcde116/p/18078595

相关文章

  • AI回答记录:python中有重载与重写的概念吗?
    问:python中有重载与重写的概念吗?GPT4-turbo:在Python中,严格来说没有像其他一些编程语言(如Java、C++)那样的重载(Overloading)机制,但是可以通过其他方式实现类似的功能。Python中有重写(Overriding)的概念。重载(Overloading):Python不支持传统的方法重载,即在同一个类中定义多个同名......
  • Python中有重写和重载的方法吗?
    问1:Python中有重写和重载的方法吗?先说结论:Python因为语言的特性,没有重载,但是有重写的方法。问2:什么是重写?1.先看代码:classCalculator:defadd(self,a,b):print("我执行了吗?")returna+b+100defadd(self,a,b):returnflo......
  • str和repr魔术方法
    Str魔术方法####__str__魔术方法''' 触发时机:使用print(对象)或者str(对象)的时候触发 功能:查看对象 参数:一个self接受当前对象 返回值:必须返回字符串类型'''classCat(): gift="抓老鼠" def__init__(self,name): self.name=name def......
  • macos selenium msedgedriver 浏览器驱动 爬虫
    MacOSSelenium跨浏览器环境搭建在macOS上使用Selenium启动新版Edge的方式如下。macOS版本:10.15.5Edge版本:83.0.478.58下载83版本对应的新版Edge驱动:https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/#downloads解压并移动到/usr/loca......
  • new魔术方法
    New''' 触发时机:实例化类生成对象的时候触发(触发时机在__init__之前) 功能:控制对象的创建过程 参数:至少一个cls接受当前的类,其他根据情况决定 返回值:通常返回对象或None'''基本使用classMyClass2(): a=100obj2=MyClass2()#print(obj2)classMyClass1():......
  • 一定要会用selenium的等待,3种等待方式解读
    很多人问,这个下拉框定位不到、那个弹出框定位不到…各种定位不到,其实大多数情况下就是两种问题:有frame没有加等待殊不知,你的代码运行速度是什么量级的,而浏览器加载渲染速度又是什么量级的,就好比闪电侠和凹凸曼约好去打怪兽,然后闪电侠打完回来之后问凹凸曼你为啥还在穿鞋没出......
  • Pycharm 中 virtualenv、pipenv、conda 虚拟环境的用法
    文章目录前言虚拟环境的通俗介绍虚拟环境和非虚拟环境该怎么选?通过Virtualenv方式创建虚拟环境通过Pipenv方式创建虚拟环境通过Conda方式创建虚拟环境 前言在网上找了好一些资料,发现介绍Pycharm虚拟环境的不多,查了一些资料,并做个总结。本文主要是介绍Pyc......
  • python selenium Demo
    importtimefromseleniumimportwebdriverfromselenium.webdriver.chrome.optionsimportOptionsfromselenium.webdriver.common.byimportBy#自动下载驱动fromwebdriver_helperimportget_webdriver#创建一个参数对象,用来控制chrome以无界面模式打开(可以视为固......
  • HttpWebChilent上传与下载进度条
    HttpClientHandlerhand=newHttpClientHandler();ProgressMessageHandlerprocessMessageHander=newProgressMessageHandler(hand);HttpClientlocalHttpClient=newHttpClient(processMessageHander);HttpRequestMessagehttpRequestMessage=newHttpRequestMes......
  • 【python】自动化工具Selenium与playwright去除webdriver检测
    对这个世界如果你有太多的抱怨跌倒了就不敢继续往前走为什么人要这么的脆弱堕落请你打开电视看看多少人为生命在努力勇敢的走下去我们是不是该知足珍惜一切就算没有拥有                     ......