1)将一个类实例化对象featuresres=FeaturesRes()(含有init,变量形式为带self形式的实例变量),转换成字典:for key, value in features_res.dict.items():
2)setattr(features_res, key, None)
setattr(object, name, value)
参数
object -- 对象。 #实例化的对象;
name -- 字符串,对象属性。
value -- 属性值。
返回值
无。
实例
以下实例展示了 setattr 的使用方法:
>>>class A(object):
... bar = 1
...
>>> a = A()
>>> getattr(a, 'bar') # 获取属性 bar 值
1
>>> setattr(a, 'bar', 5) # 设置属性 bar 值
>>> a.bar
5
3)return value>0,返回的是一个布尔类型的值,True或者False;或者:
4)
两种不同类的区别:1)用作返回存储变量的类,__init__输入需要指定;如下:
class RiskRsp(object):
"""
风险返回信息
"""
def __init__(self, status_code=None, status_message=None,
evaluate_dto=EvaluateDto(), features_res = FeaturesRes(),
company_name=None):
self.status_code = status_code
self.status_message = status_message
self.features_res = features_res
self.evaluate_dto = evaluate_dto
self.company_name = company_name
返回的时候类似会这样写:
return EvaluateDto(hy_rank = hy_rank,hyRankPlot =hyRankPlot,hyRankXPosition =hyRankXPosition,
similary_com_cnt=similary_com_cnt,
risk_score=new_risk_score, revoke_prob=new_revoke_prob,
revoke_company_name_list=revoke_company_name_list,
risk_rank=risk_detail_dto.risk_rank,
hy_risk_rank_prob_list = self.__hy_name_map_risk_info_list[big_hyname.decode('utf-8')], big_hyname=big_hyname)
2)用作存储初始化变量的类,__init__中不需要指定输入变量,如下:
class FeaturesRes(object):
def __init__(self):
# 成立年限
self.established_years = 0
# 行业企业吊销率
self.industry_dx_rate = 0.0001
# 注册资本变更次数
self.regcap_change_cnt = 0
# 股东变更次数
self.share_change_cnt = 0
4)可以将实例化类对象定义为实例变量,(实例变量原始定义:定义在方法中的变量,只作用于当前实例的类,)如下:
class CompanyFeaturesTimeSvc(CompanyFeaturesSupper):
def __init__(self):
self.companies_features_time_db_svc = CompaniesFeaturesTimeDbSvc()
self.model = CompaniesFeaturesTimeModel()
self.company_feature_helper = CompanyFeatureHelper()
5)静态变量(在class内,但不在class里面的方法内,类可以直接访问,实例化的类对象也可以调用共享访问):
class RiskRank(Enum):
SUPER_HIGH = 1 # 极高风险
HIGH = 2 # 高风险
SEC_HIGH = 3 # 次高风险
6)下面例子中,class的init()方法内,除了其他实例变量(本质是将类实例化对象当做实例变量)外,还有个path,该path只在此处用了6次,类里面的其他方法不能使用,跟静态变量相区别,因此可以为局部变量,只在init()方法使用。
class EvaluateSvc(object):
"""
模型评估封装类
"""
def __init__(self):
self.__prob_map_output = ProbMapOutput()
self.__c_o_db_svc = CompaniesOutputDbSvc()
self.lgbm_pre = LGBMPredictModel()
path = os.getcwd()
path = StringUtils.right_cut_by_word(path, '/test')
path += '/resource'
self.__hy_name_map_risk_info_list = JsonUtils.load_json_file(path, 'new_hy_risk_rank_info.json')
7)实例变量的两种情况,1)跟输入有关的实例化变量;2)跟输入无关的实例变量。
1)跟输入有关的实例化变量;
class A():
def __init__(self,name):
self.name = name
此处self.name就跟输入有关,
a=A('haha')
a.name = 'haha'
a1=A('huhu')
a1.name = 'huhu'
2)跟输入无关的实例变量。
def __init__(self):
self.__POSITIVE_LIST = ['bidding_cnt', 'trade_mark_cnt']
此处的self.__POSITIVE_LIST实例变量就跟输入无关,在类中任何地方引用都是 ['bidding_cnt', 'trade_mark_cnt']这个值。