Python教程108:针对面向对象Class类知识要点,源码示例再演示

类的基础结构,比如定义类、初始化方法__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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值