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

如何在Python中为自定义类对象列表添加类型注解?

问题解答

首先明确:person[]这种写法在Python类型提示里是不合法的,正确表示Person对象列表的方式是list[Person]。

你问的people: Person | list[Person]是完全可以的——这是Python 3.10及以上版本支持的联合类型写法,用来表示这个参数既可以接收单个Person对象,也可以接收Person对象的列表。

如果你的Python版本低于3.10,就需要从typing模块导入Union,写成people: Union[Person, list[Person]]。

另外补充个规范建议:Python类名按照PEP8应该用大驼峰命名,也就是把person改成Person,group改成Group,代码可读性会更好。

修正后的示例代码:

# Python 3.10+版本写法
class Person:
    def __init__(self, fname: str, lname: str):
        self.fname = fname
        self.lname = lname

class Group:
    def __init__(self, groupName: str, people: Person | list[Person]):
        self.groupName = groupName
        # 可选:统一把单个对象转成列表,避免后续处理分支
        if isinstance(people, Person):
            self.people = [people]
        else:
            self.people = people

如果是Python 3.9及以下版本:

from typing import Union, List

class Person:
    def __init__(self, fname: str, lname: str):
        self.fname = fname
        self.lname = lname

class Group:
    def __init__(self, groupName: str, people: Union[Person, List[Person]]):
        self.groupName = groupName
        if isinstance(people, Person):
            self.people = [people]
        else:
            self.people = people

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 20:25:19