📦 第五部分:模块和包 (Modules & Packages)
不要重复造轮子!Python拥有庞大的标准库和第三方库。
2️⃣7️⃣ 导入模块 (Import)
导入整个模块文件。
import mathprint(math.sqrt(16)) # 使用math模块里的开方函数
2️⃣8️⃣ 导入特定部分 (From...Import)
只导入模块里你需要的函数或类,使用时不用加模块名前缀。
from math import sqrtprint(sqrt(16)) # 直接调用,更简洁
像现实世界一样编程! 面向对象是Python的核心编程范式,用类和对象组织代码,让程序更易维护、易扩展。大型项目必备技能,进阶必学!
2️⃣9️⃣ 类 (Class)
使用 class 关键字定义类。
3️⃣1️⃣ 构造函数 (init)
对象创建时自动调用的初始化方法。
class Person: def __init__(self, name, age): self.name = name self.age = age
3️⃣2️⃣ self 参数
代表实例对象本身,必须作为方法的第一个参数。
def say_hello(self): print(f"Hello, I'm {self.name}")
3️⃣3️⃣ 实例属性
绑定在具体对象上的属性。
p.name = "Alice" # 动态添加实例属性
class Person: species = "Human" # 类属性
def get_name(self): return self.name
3️⃣6️⃣ 类方法 (@classmethod)
操作类属性的方法,第一个参数是 cls。
@classmethoddef get_species(cls): return cls.species
3️⃣7️⃣ 静态方法 (@staticmethod)
与类和实例都无关的普通函数。
@staticmethoddef info(): print("这是一个静态方法")
3️⃣8️⃣ 继承 (Inheritance)
子类继承父类的属性和方法。
class Student(Person): pass
3️⃣9️⃣ 方法重写 (Override)
子类重新定义父类的方法。
classStudent(Person): def say_hello(self): print(f"Hi, I'm student {self.name}")
class Student(Person): def __init__(self, name, age, grade): super().__init__(name, age) self.grade = grade
class A: passclass B: passclass C(A, B): pass
4️⃣2️⃣ 私有属性
以双下划线开头,外部不能直接访问。
class Person: def __init__(self): self.__secret = "123" # 私有属性
4️⃣3️⃣ 属性装饰器 (@property)
将方法变成属性调用。
class Person: @property def age(self): return self._age @age.setter def age(self, value): if value < 0: raise ValueError("年龄不能为负") self._age = value
4️⃣4️⃣ str 方法
定义对象的字符串表示(用户友好)。
def __str__(self): return f"Person({self.name})"
4️⃣5️⃣ repr 方法
定义对象的官方表示(开发者友好)。
def __repr__(self): return f"Person('{self.name}', {self.age})"
def __len__(self): return len(self.items)
4️⃣7️⃣ call 方法
让实例对象可以像函数一样调用。
class Adder: def __call__(self, x, y): return x + yadd = Adder()add(3, 5) # 输出 8