网站建设分工明细表精准客源
类的基础结构,比如定义类、初始化方法__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" # 覆盖父类属性@classmethoddef from_birth_year(cls, name, birth_year):"""类方法:通过出生年计算年龄"""age = 2023 - birth_yearreturn cls(name, age) # 等价于 Dog(name, age)@staticmethoddef 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 # 双下划线开头的私有属性@propertydef balance(self): # getterreturn self.__balance@balance.setterdef balance(self, value): # setterif value >= 0:self.__balance = valueaccount = BankAccount(100)
# account.__balance = 200 # 错误,无法直接访问
account.balance = 200 # 通过setter修改
print(account.balance) # 输出:200# ==============================
# 6. 特殊方法(魔术方法)
# ==============================
class Vector:def __init__(self, x, y):self.x = xself.y = ydef __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