Python如何定义类

来源:图像处理网作者:南京网站建设头衔:草根站长
导读:本期聚焦于小伙伴创作的《Python如何定义类》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《Python如何定义类》有用,将其分享出去将是对创作者最好的鼓励。

在Python中,类是面向对象编程的核心载体,通过定义类可以将相关的属性和方法封装在一起,实现代码的复用和模块化。类可以看作是一类事物的抽象模板,而实例则是这个模板的具体实现。

Python如何定义类

Python类的基础定义语法

Python中定义类使用class关键字,基础语法格式如下:

class 类名:
    # 类体部分,包含属性和方法
    pass

类名通常遵循大驼峰命名法,也就是每个单词的首字母大写,不使用下划线连接。类体中可以定义类属性、实例属性、各种类型的方法。

类的核心组成部分

构造方法与实例属性

构造方法是类实例化时自动调用的特殊方法,在Python中构造方法名为__init__,它的第一个参数固定为self,代表实例本身。我们可以在构造方法中定义实例属性,实例属性是每个实例独有的属性。

class Student:
    # 构造方法,初始化实例属性
    def __init__(self, name, age):
        self.name = name  # 实例属性name
        self.age = age    # 实例属性age

# 实例化Student类
stu1 = Student("张三", 18)
print(stu1.name)  # 输出:张三
print(stu1.age)   # 输出:18

实例方法

实例方法是定义在类内部,第一个参数为self的方法,只能通过类的实例来调用,可以访问和修改实例的属性。

class Student:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    # 实例方法,打印学生信息
    def show_info(self):
        print(f"学生姓名:{self.name},年龄:{self.age}")

stu1 = Student("李四", 20)
stu1.show_info()  # 输出:学生姓名:李四,年龄:20

类属性与类方法

类属性是定义在类内部、方法外部的属性,所有实例共享这个属性。类方法是使用@classmethod装饰器修饰的方法,第一个参数为cls,代表类本身,可以访问和修改类属性。

class Student:
    # 类属性,统计学生总人数
    total_count = 0

    def __init__(self, name, age):
        self.name = name
        self.age = age
        Student.total_count += 1  # 每实例化一个学生,总人数加1

    # 类方法,获取学生总人数
    @classmethod
    def get_total_count(cls):
        return cls.total_count

stu1 = Student("王五", 19)
stu2 = Student("赵六", 21)
print(Student.get_total_count())  # 输出:2
print(stu1.total_count)           # 输出:2,实例可以访问类属性

静态方法

静态方法是使用@staticmethod装饰器修饰的方法,不需要默认的参数selfcls,相当于定义在类内部的普通函数,通常用于实现和类相关但不需要访问类属性或实例属性的功能。

class Student:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    # 静态方法,判断年龄是否合法
    @staticmethod
    def is_valid_age(age):
        return 0 < age < 150

print(Student.is_valid_age(18))   # 输出:True
print(Student.is_valid_age(200))  # 输出:False

完整类定义示例

下面是一个包含类属性、实例属性、实例方法、类方法、静态方法的完整类定义示例:

class Student:
    # 类属性
    school = "XX中学"

    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},学校:{self.school}")

    # 类方法,修改学校名称
    @classmethod
    def set_school(cls, new_school):
        cls.school = new_school

    # 静态方法,判断分数是否及格
    @staticmethod
    def is_pass(score):
        return score >= 60

# 测试代码
stu1 = Student("小明", 16, 85)
stu1.show_info()  # 输出:姓名:小明,年龄:16,分数:85,学校:XX中学
print(Student.is_pass(stu1.score))  # 输出:True

Student.set_school("YY中学")
stu2 = Student("小红", 15, 55)
stu2.show_info()  # 输出:姓名:小红,年龄:15,分数:55,学校:YY中学
print(Student.is_pass(stu2.score))  # 输出:False

注意事项

  • 类定义完成后,需要实例化才能使用实例的属性和方法,不能直接通过类调用实例方法。
  • selfcls只是约定俗成的参数名,也可以换成其他名称,但建议使用标准命名方便代码阅读。
  • 实例属性是每个实例独有的,修改一个实例的实例属性不会影响其他实例;类属性是所有实例共享的,修改类属性会影响所有实例。

Python定义类面向对象类属性实例方法修改时间:2026-06-30 12:18:36

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。