• 预备
  • 基础语法
  • 容器类型
  • 函数
  • 面向对象
  • 输入输出
  • 进程控制
  • 线程控制
  • 正则表达式
  • 网络编程
  • 图形界面
  • 常见问题
  • API 帮助手册

  • 设置

2743

14 分钟

#创建类和对象

创建类和对象的方式:

# 创建类,类是类型 class 类名: # 构造函数,负责初始化对象 def __init__(self, 形式参数列表) -> None: pass # ... 类的其它内容 # 创建对象,对象是类的变量 变量名:类名 = 类名(实际参数列表) # 这里调用构造函数

类的 __init__ 函数(前后各两个下划线)是构造函数,用于在创建对象时初始化该对象,它的第一个参数 self 会在调用时被传入对象本身。

类的函数成员也被称作 方法(method),相应的类的变量成员也被称作 属性(Attribute)

  • 创建方法的方式和 __init__ 一样,在类的内部创建函数即可,第一个参数为 self
  • 创建属性的方式则是在 __init__ 中给 self 添加变量
class 类名: # 构造函数,负责初始化对象 def __init__(self, 形式参数列表) -> None: # 创建属性 self.属性1 = 初始值 self.属性2 = 初始值 self.属性3 = 初始值 # 创建方法 def method1(self, 形式参数列表) -> 返回值类型: pass def method2(self, 形式参数列表) -> 返回值类型: pass def method3(self, 形式参数列表) -> 返回值类型: pass

例如:

class Refrigerator: """ 冰箱类,用于模拟冰箱的开关门和存储内容物。 """ def __init__(self): """ 构造函数,负责初始化冰箱的状态 """ # 使用两个下划线开头,是对象的私有变量 self.__contents = [] # 内容物,初始化为空列表 self.__is_open = False # 冰箱门是否开启,初始化为 False def open(self): """ 打开冰箱门 """ self.__is_open = True def close(self): """ 关闭冰箱门 """ self.__is_open = False def store(self, goods) -> bool: """ 存入物品 参数: goods(Any): 要添加的物品。 返回值: bool: 是否成功。 """ if not self.__is_open: # 冰箱门没有打开返回 False return False self.__contents.append(goods) # 将物品加入内容物列表 return True def take(self, index:int): """ 存入物品 参数: index(int): 要取出物品的位置。 返回值: Any: 取出的物品。 """ if not self.__is_open: # 冰箱门没有打开返回 None return None if len(self.__contents) <= index: # 物品不存在,返回 None return None goods = self.__contents[index] self.__contents.pop(index) # 从列表中移除 return goods # 创建冰箱对象,可以有多个冰箱,它们拥有的属性是独立的 refrigerator_A = Refrigerator() refrigerator_B = Refrigerator() refrigerator_A.open() # 开门,self 为 refrigerator_A 下同 refrigerator_A.store('大象') # 把大象装进去 refrigerator_A.close() # 关门 refrigerator_B.open() # 开门,self 为 refrigerator_B 下同 refrigerator_B.store('狮子') # 把狮子装进去 refrigerator_B.close() # 关门 goods = refrigerator_A.take(0) # 取出物品 print(goods) # 查看拿到了什么 refrigerator_B.open() # 开门 goods = refrigerator_B.take(0) # 取出物品 print(goods) # 查看拿到了什么
Loading...

创建于 2025/5/7 17:25:33

更新于 2025/5/7 21:14:54