You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何sidewalk_score始终为NoneType而sidewalk_width可正常读取?

问题

我有一个用于接收人行道数据并为交通模型解析数据的对象类。在模型的某个环节,会使用人行道宽度和路面状况的函数生成评分。值得注意的是,宽度和路面状况评分在整个流程中的处理方式完全相同,但sidewalk_width初始化为int类型,而sidewalk_score初始化为NoneType。由于是NoneType,任何赋值操作都无法生效,因此它始终返回None,即便看起来应该已被赋值。

Sidewalk()类对象的生成代码如下:

class Sidewalk(object):
    def __init__(self, **kwargs):
        self.sidewalk_width = kwargs.get("sidewalk_width")
        self.sidewalk_score = kwargs.get("sidewalk_condition_score")

具体记录的赋值代码块如下:

def get_plts(path):
    with fiona.open(path, 'r', layer='plts') as src:
        driver = src.driver
        crs = src.crs
        schema = src.schema
        for f in src:
            data = f['properties']
            sidewalks = [Sidewalk(
                    sidewalk_width=data['sidewalk_width'],
                    sidewalk_score=data['sidewalk_condition_score'])]

它们最终会传入以下函数:

def _calculate_condition_score(self, sidewalk):
        width = sidewalk.sidewalk_width
        cond = sidewalk.sidewalk_score

在初始化前,脚本可以正常读取地理数据包(geopackage)中的数字。宽度和状况评分在geopackage中均被设为整数类型。若街道无人行道,仅该记录的width会显示为"None",其余记录的width会正常显示整数值;但无论何种情况,condition score始终为"None"。

为何width能全程正常读取,而condition却始终被锁定为NoneType?我已在模型各处添加打印语句,发现问题出在初始化前后。当模型开始处理数据时,类型问题已产生,状况评分的数值仅会显示为"Null"。

分析与解决

问题根源是关键字参数名不匹配:

  • Sidewalk类的__init__方法中,通过kwargs.get("sidewalk_condition_score")获取路面状况评分的值,赋值给self.sidewalk_score
  • 但创建Sidewalk实例时,传入的参数名是sidewalk_score=data['sidewalk_condition_score']

由于kwargs字典里找不到sidewalk_condition_score这个键,kwargs.get()默认返回None,导致self.sidewalk_score始终为None。而宽度参数的键sidewalk_width在定义和调用时完全一致,因此能正常获取值。

只需让参数键名在类定义和实例创建时保持一致即可修复,两种方案任选其一:

方案一:修改实例创建代码

sidewalks = [Sidewalk(
        sidewalk_width=data['sidewalk_width'],
        sidewalk_condition_score=data['sidewalk_condition_score'])]

方案二:修改Sidewalk类的初始化方法

class Sidewalk(object):
    def __init__(self, **kwargs):
        self.sidewalk_width = kwargs.get("sidewalk_width")
        self.sidewalk_score = kwargs.get("sidewalk_score")

内容的提问来源于stack exchange,提问作者armchairavenger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 11:42:04