当前位置:首页 > 技术 > 正文内容

Python面向对象编程基础

访客 技术 2026年8月5日 1

类的定义与使用

在 Python 中,类是一种用于定义对象的数据结构,它包含对象的状态(属性)和行为(方法)。通过类,可以实现代码的模块化和重用。

class Employee:
    # 类变量
    employee_type = "Full-time"

    def __init__(self, name, position):
        self.name = name  # 实例变量
        self.position = position

    def display_info(self):
        print(f"Name: {self.name}, Position: {self.position}")

    @staticmethod
    def company_policy():
        return f"All employees are {Employee.employee_type}."

# 创建实例
emp1 = Employee("John", "Developer")
emp2 = Employee("Jane", "Designer")

print(emp1.name)
emp2.display_info()
print(Employee.company_policy())

实例属性的应用

实例属性是每个对象独有的数据成员,它们通常在构造函数中初始化。

class Student:
    def __init__(self, student_id, grade):
        self.student_id = student_id
        self.grade = grade

    def show_grade(self):
        print(f"Student ID: {self.student_id}, Grade: {self.grade}")

student1 = Student(101, "A")
student2 = Student(102, "B")

student1.show_grade()
student2.grade = "A+"
student2.show_grade()

类属性与实例属性的区别

类属性是所有实例共享的,而实例属性则为每个实例单独存在。

class Vehicle:
    vehicle_count = 0  # 类属性

    def __init__(self, model):
        Vehicle.vehicle_count += 1
        self.model = model  # 实例属性

    def get_model(self):
        return self.model

car1 = Vehicle("Sedan")
car2 = Vehicle("SUV")

print(Vehicle.vehicle_count)  # 输出:2
print(car1.get_model())  # 输出:Sedan

实例方法详解

实例方法是与具体对象相关的方法,它们可以通过对象来调用,并能访问或修改对象的属性。

class Rectangle:
    def __init__(self, width, height):
        self.width = width
        self.height = height

    def calc_area(self):
        return self.width * self.height

rect = Rectangle(5, 10)
print(rect.calc_area())  # 输出:50

不同种类的方法

  • 实例方法:需要通过实例调用,第一个参数是self。
  • 类方法:第一个参数是cls,表示类本身。
  • 静态方法:不依赖于类或实例,使用@staticmethod装饰器。
class Example:
    @classmethod
    def class_method(cls):
        print(f"Called class method from {cls.__name__}")

    @staticmethod
    def static_method():
        print("Called static method")

Example.class_method()
Example.static_method()
标签: Pythonoop

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。