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

C#如何在运行时创建类对象?(图书信息教学场景)

运行时自动创建图书类对象的实现方案

1. 先定义基础图书类

首先需要一个包含核心属性的Book类,用来描述单本图书的信息:

class Book:
    def __init__(self, title, author, category):
        self.title = title
        self.author = author
        self.category = category
    
    def show_info(self):
        print(f"书名: {self.title}, 作者: {self.author}, 类别: {self.category}")

2. 运行时创建对象的常用实现方式

方式一:从用户输入动态创建

这是教学场景中最直观的方式,通过接收用户输入的图书信息,实时生成对象:

# 用列表存储所有图书对象,方便后续管理
book_collection = []

while True:
    print("\n请输入图书信息(输入q退出录入)")
    title_input = input("书名: ")
    if title_input.lower() == 'q':
        break
    author_input = input("作者: ")
    category_input = input("类别: ")
    
    # 运行时调用类的构造方法,生成新的Book对象
    new_book = Book(title_input, author_input, category_input)
    book_collection.append(new_book)

# 验证所有创建的对象
print("\n已录入的所有图书:")
for book in book_collection:
    book.show_info()

方式二:从批量数据自动创建

如果有现成的图书数据集(比如字典列表),可以通过循环遍历批量生成对象:

# 模拟批量图书数据源
book_dataset = [
    {"title": "Python编程:从入门到实践", "author": "埃里克·马瑟斯", "category": "编程"},
    {"title": "百年孤独", "author": "加西亚·马尔克斯", "category": "文学"},
    {"title": "时间简史", "author": "史蒂芬·霍金", "category": "科普"}
]

book_collection = []
for data in book_dataset:
    # 按数据字段实例化对象
    new_book = Book(data["title"], data["author"], data["category"])
    book_collection.append(new_book)

# 输出结果
for book in book_collection:
    book.show_info()

方式三:动态参数适配扩展属性

如果需要灵活支持更多图书属性(比如出版年份、定价),可以用**kwargs实现动态属性赋值:

class Book:
    def __init__(self, **kwargs):
        # 把传入的所有键值对直接设为对象属性
        for attr_name, attr_value in kwargs.items():
            setattr(self, attr_name, attr_value)
    
    def show_info(self):
        info_str = ", ".join([f"{k}: {v}" for k, v in self.__dict__.items()])
        print(info_str)

# 运行时创建带扩展属性的对象
new_book = Book(title="三体", author="刘慈欣", category="科幻", publish_year=2008, price=88)
new_book.show_info()

核心逻辑说明

运行时创建对象的本质是在程序执行过程中,调用类的构造方法__init__生成实例。教学时可以重点拆解:

  • 类的定义与构造方法的作用:用来封装对象的属性和初始化逻辑
  • 实例化语法:类名(参数)就是创建新对象的核心操作
  • 容器存储的必要性:用列表、字典等容器保存对象,才能实现批量管理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 03:30:50