类的基础结构,比如定义类、初始化方法__init__,然后实例化对象。然后是类的属性,包括实例属性和类属性。接着是方法,比如实例方法、类方法、静态方法的区别。还有继承和多态,这是面向对象的重要部分。可能还需要提到特殊方法,比如__str__或者运算符重载。封装的话,私有属性和访问器方法也应该讲一下。还有可能包括property装饰器,或者类的组合等等。
主要知识点总结:
类结构:class 关键字定义,包含属性(类属性/实例属性)和方法
实例化:通过 类名() 创建对象,自动调用 init 方法
方法类型:
实例方法:默认类型,第一个参数为 self
类方法:@classmethod 装饰,第一个参数为 cls
静态方法:@staticmethod 装饰,无默认参数
继承:子类继承父类属性和方法,可通过方法重写实现多态
封装:使用双下划线 __ 定义私有属性,通过 property 实现访问控制
特殊方法:通过实现 add, str 等方法实现运算符重载和对象描述
这些知识点构成了 Python 面向对象编程的核心基础,实际开发中常用于组织复杂逻辑、实现代码复用和创建数据结构。
# -*- coding: utf-8 -*-
# @Author : 小红牛
# 微信公众号:WdPython
# ======================
# 1. 类的基本定义与实例化
# ======================
class Animal:
# 类属性(所有实例共享)
species = "Unknown"
# 初始化方法(构造方法)
def __init__(self, name, age):
# 实例属性
self.name = name
self.age = age
# 实例方法
def speak(self):
return "......"
# 实例化对象
a1 = Animal("Buddy", 3)
print(a1.speak()) # 输出:......
# ==============================
# 2. 类属性 vs 实例属性
# ==============================
print(Animal.species) # 类属性访问 → "Unknown"
a1.species = "Canine" # 为实例创建同名属性
print(a1.species) # 输出:"Canine"
print(Animal.species) # 类属性不变 → "Unknown"
# ======================================
# 3. 类方法 & 静态方法
# ======================================
class Dog(Animal):
species = "Canis lupus familiaris" # 覆盖父类属性
@classmethod
def from_birth_year(cls, name, birth_year):
"""类方法:通过出生年计算年龄"""
age = 2023 - birth_year
return cls(name, age) # 等价于 Dog(name, age)
@staticmethod
def is_valid_name(name):
"""静态方法:验证名字有效性"""
return len(name.strip()) > 0
# 使用类方法创建实例
d1 = Dog.from_birth_year("Rex", 2020)
print(d1.age) # 输出:3
# 调用静态方法
print(Dog.is_valid_name(" ")) # 输出:False
# ==============================
# 4. 继承与多态
# ==============================
class Cat(Animal):
def speak(self): # 方法重写
return "Meow!"
def animal_sound(animal): # 多态示例
print(animal.speak())
animal_sound(Dog("Buddy", 3)) # 输出:......
animal_sound(Cat("Whiskers", 2)) # 输出:Meow!
# ==============================
# 5. 封装与私有属性
# ==============================
class BankAccount:
def __init__(self, balance):
self.__balance = balance # 双下划线开头的私有属性
@property
def balance(self): # getter
return self.__balance
@balance.setter
def balance(self, value): # setter
if value >= 0:
self.__balance = value
account = BankAccount(100)
# account.__balance = 200 # 错误,无法直接访问
account.balance = 200 # 通过setter修改
print(account.balance) # 输出:200
# ==============================
# 6. 特殊方法(魔术方法)
# ==============================
class Vector:
def __init__(self, x, y):
self.x = x
self.y = y
def __add__(self, other): # 运算符重载
return Vector(self.x + other.x, self.y + other.y)
def __str__(self): # 字符串表示
return f"Vector({self.x}, {self.y})"
v1 = Vector(2, 3)
v2 = Vector(1, 4)
print(v1 + v2) # 输出:Vector(3, 7)
完毕!!感谢您的收看
----------★★跳转到历史博文集合★★----------
我的零基础Python教程,Python入门篇 进阶篇 视频教程 Py安装py项目 Python模块 Python爬虫 Json Xpath 正则表达式 Selenium Etree CssGui程序开发 Tkinter Pyqt5 列表元组字典数据可视化 matplotlib 词云图 Pyecharts 海龟画图 Pandas Bug处理 电脑小知识office自动化办公 编程工具 NumPy Pygame