关于__new__和__call__的想法

本文解析了Python中__new__与__call__的区别与应用,__new__用于创建类实例,而__call__使类实例可调用。深入探讨了两者在类实例化过程中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

__new__和__call__很像,两个都是用来产生对象的

__new__用来产生的对象是‘类’,class 时触发(不是)

__call__用来产生的对象是'对象',这种对象无法继续产生对象,但是在他的类里如果有__call__,则可以被调用

类()时触发__call__

没有验证__new__是不是绑定方法,感觉不会,因为类又不会继续产生类,只用一次,干嘛要绑定

而__call__应该不是绑定方法,如果绑定了,产生实例时调用自身的类,那么想给实例添加__callable__时,不就无法继续产生实例了吗

所以猜测,元类不像是类产生对象一样

元类只是类定义的规范

 

转载于:https://www.cnblogs.com/FlFtFw/p/9443164.html

#include "ESCSource.h" #include "ObjectManager.h" #include "ConfigException.h" #include "InvalidNameException.h" #include "SysLogger.h" #include "TransferOperationInfo.h" #include "Recovery.h" #include "Util.h" #include "Converter.h" #include "IOException.h" #include "PendulumValve.h" #include "PendulumController.h" #include "PressureController.h" #include "GasSource.h" #include "Gasses.h" #include "GroupedCheckItem.h" #include <iostream> #include "BaseProcessGasLine.h" #include "MFCController.h" using namespace std; ESCSource::ESCSource() { m_pin = NULL; m_ESCDC = NULL; m_chiller = NULL; m_heValve1 = NULL; m_heValve2 = NULL; m_heValve3 = NULL; m_heValve4 = NULL; m_heValve5 = NULL; m_heValve6 = NULL; m_rcpClass = ""; m_cfgESCTempSetpoint = NULL; m_cfgESCHighTempSetpoint = NULL;//add by songpan 20200528 m_cfgChillerMode = NULL;//add by songpan 20200528 m_cfgHePresThresholdToBeginDechuck = NULL; m_cfgESCReversePolarityDeclampVoltSetpt = NULL; m_cfgESCReversedPolarityDechuckTime = NULL; m_cfgHePresThresholdToBeginDechuckDown = NULL; //add by gaozl m_cfgESCReversePolarityDeclampVoltSetptDown = NULL; m_cfgESCReversedPolarityDechuckTimeDown = NULL; m_cfgDechuckDelayTimeDown1 = NULL; m_cfgDechuckDelayTimeDown2 = NULL; m_cfgDechuckHVReverseDown = NULL; m_cfgESCClampVoltageSetpoint = NULL; m_cfgESCClampVoltageToleranceTimeout = NULL; m_cfgESCHeOnDelayTime = NULL; m_cfgESCChargingTime = NULL; m_cfgIdleBackSideHeOn =NULL; //added by phm 202305 m_cfgHePressureInit = NULL; m_cfgESCHoldingVoltage = NULL; m_cfgDechuckDelayTime1 = NULL; m_cfgDechuckDelayTime2 = NULL; m_cfgDechuckHVReverse = NULL; m_bESCClampTimeout = NULL; m_bHeEvacTimeout = NULL; //m_cfgHePresControllerEvacTime = NULL; m_sChuck = new Chuck(); m_sChuck->setOwner(this); m_sDechuck = new Dechuck(); m_sDechuck->setOwner(this); m_sDechuck_BPHeOff=new Dechuck_BPHeOff; m_sDechuck_BPHeOff->setOwner(this); m_sESC_Ground=new ESC_Ground; m_sESC_Ground->setOwner(this); m_sChuck_HVOn=new Chuck_HVOn; m_sChuck_HVOn->setOwner(this); m_sDechuck_HVOff=new Dechuck_HVOff; m_sDechuck_HVOff->setOwner(this); m_sDechuck_PinUp=new Dechuck_PinUp; m_sDechuck_PinUp->setOwner(this); m_CurrentESCHVPowerPolarity = 0;//added by zhongchenyu 20170828 m_sLandScapeDeChuck = new LandScapeDeChuck(); m_sLandScapeDeChuck->setOwner(this); m_sHepres = new SetHePressure(); m_sHepres->setOwner(this); m_nESCClampTimeout = NULL; m_nHeEvacTimeout = NULL; m_nESCDeChuckClampTimeout = NULL; m_wafersub = NULL;//add by zcy for wafercounter m_startDechuckHeOffCon = new AppCondition("StartDechuckHVOffCon"); m_startESCCompsentionCon = new AppCondition("startESCCompsentionCon"); m_sESC_Compsention=new ESC_Compsention; m_sESC_Compsention->setOwner(this); m_cfgDCBiasCompensationFunction = NULL; m_cfgDCBiasCompensationSource = NULL; m_cfgMaxDCBiasCompensationVoltage = NULL; m_cfgDCBiasCompBVCRatio = NULL; m_cfgDCBiasCompMatchRatio = NULL; m_cfgCenterTapDelayTime = NULL; m_startDechuckPinUpCon = new AppCondition("StartDechuckPinUpCon"); m_cfgPinUpAfterHVDischarge = NULL; m_cfgPinUpAfterHVDischargeDelayTime = NULL; //m_nESCDeChuckHVOffTimeout = NULL; m_cfgV8CloseMode = NULL;//add by cxy m_cfgDCBiasCompMatch2Ratio = NULL; m_HomeEnable = true; m_exfocusring = NULL; //focusring m_focusring = NULL; m_cfgFocusringposition = NULL; m_cfgLiftingFREnable = NULL; m_EXFocusRingPosition = 0; //add sp 20231225 m_cfgFRPositionMax = NULL; m_path = ""; m_sHeleak_On=new Heleak_On; m_sHeleak_On->setOwner(this); m_sHeleak_Off=new Heleak_Off; m_sHeleak_Off->setOwner(this); m_cfgHeLeakStabletimeout=NULL; m_nESCHeleakOnTimeout = NULL; } ESCSource::~ESCSource() { } void ESCSource::call_Chuck(double pressure) { m_sChuck->setParamValue("pressure", pressure); call(m_sChuck); } 我想对它进行cpputest 单元测试
最新发布
08-15
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值