前言:
一.面向对象编程核心定义:
一种编程思想,以「类和对象」为核心,将数据(属性)和行为(方法)封装在一起,模拟现实世界的事物,让代码更贴近人类思维。
二.面向对象编程的价值
核心价值:解决代码冗余、维护困难的问题,提升开发效率,适合中大型项目,核心作用4点
|
核心作用 |
具体说明(零基础易懂) |
|
1. 封装性 |
将属性和方法封装在一起,隐藏内部细节,只暴露必要接口,避免误修改数据,提升安全性。 |
|
2. 复用性 |
定义一个类后,可反复实例化多个对象,无需重复编写相同代码(比如一个学生类,可创建无数学生对象)。 |
|
3. 可维护性 |
代码结构清晰,修改一个类的逻辑,所有该类的对象都会生效,无需逐个修改,降低维护成本。 |
|
4. 扩展性 |
通过继承、多态,可基于现有类快速扩展新功能,不影响原有代码,适合项目迭代升级。 |
三.核心概念
|
概念 |
用法/定义 |
极简理解 |
|
类(class) |
class 类名(): 定义属性和方法 |
对象的“模板”,规定对象有什么特征、能做什么 |
|
对象(实例) |
对象名 = 类名(参数),类的实例化 |
按“模板”造的“实物”,可直接调用属性和方法 |
|
属性/方法 |
属性:对象特征(变量);方法:对象行为(函数) |
属性=变量,方法=依附于类/对象的函数 |
四.类与对象
|
操作 |
固定格式 |
关键要点 |
|
定义类 |
class 类名(): def __init__(self, 属性1, 属性2): self.属性1 = 属性1 self.属性2 = 属性2 |
__init__是构造方法,self必写(代表当前对象) |
|
实例化对象 |
对象名 = 类名(属性1值, 属性2值) |
参数对应__init__的属性,生成具体对象 |
|
调用属性/方法 |
对象名.属性对象名.方法() |
属性直接调用,方法需加括号(无参数时) |
# 定义类(学生类)
class Student():
def __init__(self, name, age, score):
self.name = name
self.age = age
self.score = score
def show_info(self):
print(f"{self.name}, {self.age}, {self.score}")
# 实例化对象
stu1 = Student("张三", 18, 90)
stu2 = Student("李四", 19, 85)
# 调用属性和方法
print(stu1.name)
print(stu2.score)
stu1.show_info()
stu2.show_info()
五.面向对象三大特性
|
特性 |
核心用法 |
极简说明 |
|
封装 |
self.__属性名(私有化),用方法访问/修改 |
隐藏属性,避免误修改,提升安全性 |
|
继承 |
class 子类(父类): super().__init__(父类属性) |
子类继承父类属性/方法,可新增/重写方法 |
|
多态 |
不同子类重写父类方法,调用时自动匹配 |
同一方法,不同对象有不同实现,简化调用 |
# 1. 封装(私有化属性)
class Student():
def __init__(self, name, age):
self.name = name
self.__age = age # 私有化,外部无法直接访问
def get_age(self):
return self.__age
def set_age(self, new_age):
if new_age > 0:
self.__age = new_age
stu = Student("张三", 18)
print(stu.name)
print(stu.get_age())
stu.set_age(19)
print(stu.get_age())
# 2. 继承
class Person():
def __init__(self, name):
self.name = name
def eat(self):
print(f"{self.name} 吃饭")
class Student(Person):
def __init__(self, name, score):
super().__init__(name)
self.score = score
def eat(self):
print(f"{self.name} 吃食堂")
stu = Student("李四", 85)
stu.eat()
print(stu.score)
# 3. 多态
class Cat(Person):
def eat(self):
print(f"{self.name} 吃猫粮")
class Dog(Person):
def eat(self):
print(f"{self.name} 吃狗粮")
def feed(animal):
animal.eat()
cat = Cat("小花")
dog = Dog("旺财")
feed(cat)
feed(dog)
六.常用补充
|
知识点 |
用法 |
说明 |
|
类属性 |
class 类名: 类属性 = 值 |
所有对象共享,可通过类名/对象名访问 |
|
静态方法 |
@staticmethoddef 方法名(): pass |
无self,不依赖类/对象,类名直接调用 |
|
类方法 |
@classmethoddef 方法名(cls): pass |
cls代表类,可访问类属性,类名直接调用 # 类属性 stu1 = Student("张三") # 静态方法 print(Tools.add(3, 5)) # 类方法 print(Student.get_school()) |
五、注意点
-
__init__是构造方法,创建对象时自动执行,不是初始化方法
-
self必须是方法第一个参数,代表当前对象,不能省略
-
私有化属性(__开头),外部无法直接访问,只能通过方法操作
-
继承时,子类__init__需用super()调用父类__init__,否则无法继承父类属性
-
静态方法/类方法无需实例化,直接用类名调用



