类与对象
在 Python 中,类是一个模版,用来定义对象的属性(特征)和方法(行为)。而对象是类的实例,也就是用类创建出来的具体“东西”。通过类和对象,我们可以用代码模拟现实中的事物和逻辑。
1. 什么是类?
类可以看作是蓝图或模板,它定义了某一类对象具有的属性(数据)和方法(行为)。
- 属性:表示对象的特征,例如“姓名”、“年龄”。
- 方法:表示对象的行为,例如“吃饭”、“跑步”。
类的定义
用关键字 class
定义一个类:
class Person:
# 构造方法:定义属性
def __init__(self, name, age):
self.name = name # 定义姓名属性
self.age = age # 定义年龄属性
# 定义一个方法
def greet(self):
print(f"你好,我叫 {self.name},今年 {self.age} 岁。")
2. 什么是对象?
对象是通过类创建的具体实例。类是抽象的,而对象是具体的。
创建对象
通过调用类,就可以创建对象:
# 创建对象
p1 = Person("小明", 18)
p2 = Person("小红", 20)
# 调用对象的方法
p1.greet() # 输出:你好,我叫 小明,今年 18 岁。
p2.greet() # 输出:你好,我叫 小红,今年 20 岁。
3. 类的基本组成
(1) 构造方法 __init__
- 作用:在创建对象时自动执行,用于初始化对象的属性。
- 格式:
def __init__(self, 参数1, 参数2, ...): self.属性名1 = 参数1 self.属性名2 = 参数2
示例:
class Car:
def __init__(self, brand, color):
self.brand = brand # 品牌
self.color = color # 颜色
my_car = Car("Tesla", "Red")
print(my_car.brand) # 输出:Tesla
print(my_car.color) # 输出:Red
(2) 方法
- 普通方法:定义在类中的函数,表示对象的行为。
- 调用方法:使用
对象名.方法名()
。
示例:
class Dog:
def __init__(self, name):
self.name = name
def bark(self):
print(f"{self.name} 正在汪汪叫!")
my_dog = Dog("旺财")
my_dog.bark() # 输出:旺财 正在汪汪叫!
(3) 属性
- 实例属性:通过
self.属性名
定义,只属于特定对象。 - 类属性:属于整个类,由所有对象共享。
示例:
class Cat:
species = "猫科动物" # 类属性
def __init__(self, name):
self.name = name # 实例属性
# 实例化对象
cat1 = Cat("喵喵")
cat2 = Cat("咪咪")
# 访问类属性
print(cat1.species) # 输出:猫科动物
print(cat2.species) # 输出:猫科动物
# 访问实例属性
print(cat1.name) # 输出:喵喵
print(cat2.name) # 输出:咪咪
4. 类的高级功能
(1) 继承
- 定义:子类可以继承父类的属性和方法,并可以扩展或重写父类的行为。
- 好处:代码复用,提高开发效率。
示例:
class Animal:
def __init__(self, name):
self.name = name
def speak(self):
print(f"{self.name} 发出叫声")
# Dog 继承自 Animal
class Dog(Animal):
def speak(self):
print(f"{self.name} 汪汪叫")
# 创建对象
dog = Dog("旺财")
dog.speak() # 输出:旺财 汪汪叫
(2) 多态
- 定义:不同子类可以定义自己的行为,但调用时表现为相同的接口。
- 意义:可以使用统一的方式处理不同的子类对象。
示例:
class Cat(Animal):
def speak(self):
print(f"{self.name} 喵喵叫")
animals = [Dog("旺财"), Cat("小黑")]
for animal in animals:
animal.speak()
# 输出:
# 旺财 汪汪叫
# 小黑 喵喵叫
(3) 私有属性和方法
- 私有属性:以
__
开头,只能在类内部访问。 - 私有方法:只能在类内部调用。
示例:
class Person:
def __init__(self, name, age):
self.name = name
self.__age = age # 私有属性
def __secret(self): # 私有方法
print(f"{self.name} 的年龄是 {self.__age}")
def show_secret(self):
self.__secret() # 在类内部调用私有方法
p = Person("小明", 18)
p.show_secret() # 输出:小明 的年龄是 18
5. 总结
- 类是蓝图,对象是具体实例:用类定义属性和方法,用对象调用它们。
- 构造方法:初始化对象属性。
- 继承与多态:让代码更灵活复用。
- 属性和方法:是类与对象的核心。
通过掌握类与对象,能够用面向对象编程的方式设计和实现更复杂、更贴近现实的程序!