百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

Python 类和方法(python类的方法与普通的方法)

off999 2025-06-23 21:20 22 浏览 0 评论

Python 类和方法

Python 类创建、属性和方法具体是如何体现的,代码中如何设计,请继续看下去。

蟒蛇类解释

  • 在 Python 中使用 OOP ?
  • 什么是 Python 类?
  • Python 类创建
  • Python类方法


  • “self”关键字是什么,类可以具有哪些不同的属性,以及如何定义用于初始化目的的构造函数。
  • 了解继承在 Python 中的工作原理、
  • 如何处理多重继承以及什么是运算符重载

我可以在 Python 中使用 OOP 吗?

Python支持面向对象编程(OOP)。OOP是一种开发模型,它允许程序员专注于生成可重用的代码。它不同于遵循顺序方法的程序模型。

当处理大型而复杂的项目时,OOP 非常有用。将有多个程序员创建可重用的代码,并共享和集成他们的源代码。可重用性带来更好的可读性,并减少长期维护。

什么是 Python 类?

类是将变量和函数排列到单个逻辑实体中。它用作创建对象的模板。每个对象都可以使用类变量和函数作为其成员。

Python 有一个称为“class”的保留关键字,可用于定义新类。

该对象是在运行时创建的类的工作实例。

Python 类创建

要创建类,应遵循以下结构。之后,在Python中创建自己的类将非常容易。

class ClassName:
    """Class documentation."""

    # Class Attributes

    def __init__(self, arguments):
        """Constructor."""
        # Initialize Class Attributes

    # Class Methods

在 Python 中使用类时,您需要了解一些术语。

1. “class”关键词
2. 实例属性
3。类属性
4.“self”关键词
5.“__init_”方法


“class”关键字

使用 class 关键字,我们可以创建一个 Python 类,如下例所示。

class BookStore:
    pass


“self”关键字

Python 提供了“self”关键字来表示类的实例。它用作访问类成员(如类方法中的属性)的句柄。

另外,请注意,它是每个 Python 类中 __init__ 方法的第一个隐式参数

__init__(构造函数)

“__init__()”是与每个Python类相关联的唯一方法。

Python 会自动为从类创建的每个对象调用它。其目的是使用用户提供的值初始化类属性。

它在面向对象编程中通常被称为构造函数。请参阅以下示例。

class BookStore:
    def __init__(self):
        print("__init__() constructor gets called...")
        
B1 = BookStore()

输出

__init__() constructor gets called...

实例属性

这些是定义为__init__方法参数的对象特定属性。每个对象本身可以有不同的值。

在下面的示例中,“attrib1”和“attrib2”是实例属性。

class BookStore:
    def __init__(self, attrib1, attrib2):
        self.attrib1 = attrib1
        self.attrib2 = attrib2

类属性

与在对象级别可见的实例属性不同,类属性对于所有对象都保持不变。

查看以下示例以演示类级属性的用法。

class BookStore:
    instances = 0
    def __init__(self, attrib1, attrib2):
        self.attrib1 = attrib1
        self.attrib2 = attrib2
        BookStore.instances += 1

b1 = BookStore("", "")
b2 = BookStore("", "")

print("BookStore.instances:", BookStore.instances)

在此示例中,“实例”是类级属性。您可以使用类名访问它。它保存创建的实例总数。

我们创建了类<书店>的两个实例。因此,执行示例应打印“2”作为输出。

# output
BookStore.instances: 2

Python类方法

Python 类方法是直接链接到类而不是其对象的方法。这意味着我们可以调用它们而无需创建类的实例。以下是 Python 类方法的实际细分:

1. 定义类方法

若要定义类方法,请使用方法定义正上方的修饰器。@classmethod

类方法的第一个参数传统上是命名的,它指的是类本身。cls

2. 访问类属性

类方法可以访问和修改类级属性(在类的所有实例之间共享的变量)。

它们无法访问或修改特定于实例的属性(每个对象唯一的属性)。

3. 何时使用类方法

以下是一些常见的用例,其中 Python 类方法对我们很有用。

另请参阅: Python 静态方法

修改类状态。例如,类方法可用于递增类变量或向类列表中添加新项。

@classmethod
def get_instance_count(cls):
    return cls.instance_count

执行工厂操作。例如,类方法可用于创建具有特定属性值的类的新实例。

@classmethod
def create_employee(cls, name, position):
    if position == 'manager':
        return cls(name, 80000)
    else:
        return cls(name, 50000)

替代构造函数。例如,我们可能有一个表示日期的类,并使用类方法从特定格式的字符串创建实例。

@classmethod
def from_string(cls, date_str):
    year, month, day = map(int, date_str.split('-'))
    return cls(year, month, day)

4. 调用类方法

  • 类方法在类本身上调用,而不是在类的实例上调用。
  • 您可以使用类名而不是 来调用它们。ClassName.method()object.method()

下面是一个类方法的实际示例:

class MyClass:
    instance_count = 0  # Class-level attribute

    def __init__(self, data):
        self.data = data
        MyClass.instance_count += 1

    @classmethod
    def get_instance_count(cls):
        return cls.instance_count

# Creating instances
obj1 = MyClass(10)
obj2 = MyClass(20)

# Calling the class method to get the instance count
count = MyClass.get_instance_count()

print(f"Number of instances created: {count}")

# Output: Number of instances created: 2

在此示例中,是返回实例计数的类方法。它演示了类方法的实际用途之一。get_instance_count()

另请参阅:数据类练习

Python示例

这里给出的是一个 Python 类示例,我们在其中定义了一个 BookStore 类。它有一个用于初始化成员的构造函数和一个用于打印详细信息的类方法。我们创建了三个具有不同值的对象。

在 Python 中创建 BookStore 类

class BookStore:
    noOfBooks = 0
 
    def __init__(self, title, author):
        self.title = title
        self.author = author
        BookStore.noOfBooks += 1
 
    def bookInfo(self):
        print("Book title:", self.title)
        print("Book author:", self.author,"\n")
 
# Create a virtual book store
b1 = BookStore("Great Expectations", "Charles Dickens")
b2 = BookStore("War and Peace", "Leo Tolstoy")
b3 = BookStore("Middlemarch", "George Eliot")
 
# call member functions for each object
b1.bookInfo()
b2.bookInfo()
b3.bookInfo()

print("BookStore.noOfBooks:", BookStore.noOfBooks)

你可以打开IDLE或任何其他Python IDE,将上面的代码保存在某个文件中,然后执行程序。

在此示例中,我们创建了 BookStore 类的三个对象,即 b1、b2 和 b3。每个对象都是 BookStore 类的一个实例。

书店类的 UML 图

上述代码的 UML 图如下所示。

Python 类和对象(UML 图)

执行示例中的代码后,应看到以下结果。

# output
Book title: Great Expectations
Book author: Charles Dickens 

Book title: War and Peace
Book author: Leo Tolstoy 

Book title: Middlemarch
Book author: George Eliot 

BookStore.noOfBooks: 3

你可能已经从上面的例子中观察到,我们使用了“self”和“__init__”等一些关键词。

练习

以下是一些简单的 Python 类和对象练习,用于在 Python 中练习面向对象编程。但是,完成本教程后,请查看我们面向初学者的 40 个基本 Python 练习。

练习

创建一个名为 Savings Account 的类,该类表示银行中的实际储蓄帐户。它有两个属性:基金和rate_of_interest。该类还应该有一个名为 debit() 的方法,该方法将资金减少指定的金额,以及一个名为 credit() 的方法,用于添加到现有余额中。此外,定义第三种方法将利息金额转移到储蓄账户。

class SavingsAccount:
    def __init__(self, funds, rate_of_interest):
        self.funds = funds
        self.rate_of_interest = rate_of_interest

    def debit(self, value):
        self.funds -= value

    def credit(self, value):
        self.funds += value

    def transfer_interest(self):
        self.funds *= 1 + self.rate_of_interest

练习-2

创建一个名为 Product 的类,该类具有两个属性:名称和价格。该类还应该有一个名为 get_total_cost() 的方法,该方法返回产品的总成本(价格的 1.5 倍),包括税。

class Product:
    def __init__(self, name, price):
        self.name = name
        self.price = price

    def get_total_cost(self):
        return self.price * 1.5

练习-3

定义一个名为“购物车”的类,其中包含产品列表。该类还应该有一个名为 add_product() 的方法,用于将产品添加到购物车,以及一个名为 get_total_cost() 的方法,该方法返回购物车中所有产品的总成本。

class ShoppingCart:
    def __init__(self):
        self.products = []

    def add_product(self, product):
        self.products.append(product)

    def get_total_cost(self):
        total_cost = 0
        for product in self.products:
            total_cost += product.get_total_cost()
        return total_cost

练习-4

创建一个名为 Employee 的类,该类具有三个属性:姓名、年龄和薪水。该类还应该有一个名为 get_annual_salary() 的方法,用于返回员工的年薪。

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

    def get_annual_salary(self):
        return self.salary * 12

练习-5

实现一个名为“公司”的类,该类具有员工列表。该类还应该有一个名为 get_total_salary() 的方法,该方法返回公司中所有员工的总工资。

class Company:
    def __init__(self):
        self.employees = []

    def add_employee(self, employee):
        self.employees.append(employee)

    def get_total_salary(self):
        total_salary = 0
        for employee in self.employees:
            total_salary += employee.get_annual_salary()
        return total_salary

结论

介绍了 Python 中类、对象和方法的基础知识.

类:

  • 类是使用关键字定义的。class
  • 类可以具有属性和方法。
  • 属性是属于类的变量。
  • 方法是属于类的函数。
  • 类可以从其他类继承。
  • 继承允许您重用代码并创建更专业的类。

对象:

  • 对象是使用关键字从类创建的。new
  • 对象具有自己的类属性副本。
  • 他们可以调用类方法。
  • 我们可以将它们作为参数传递给函数并从函数返回。
  • 我们可以使用 、、、、 和运算符将它们与其他对象进行比较。<><=>===!=

类方法:

  • 类方法绑定到类,而不是其对象。
  • 类方法直接调用类,而不先创建类的实例。
  • 类方法通常修改类状态、执行工厂操作或为类提供实用工具函数。
  • 开发人员使用装饰器或函数定义类方法。@classmethodclassmethod()

其他技术事实:

  • 类是一类对象,我们可以将它们作为参数传递并从函数返回。
  • 类可以嵌套在另一个类中。
  • 随后,他们可以创建元类,从而创建其他类。

相关推荐

大文件传不动?WinRAR/7-Zip 入门到高手,这 5 个技巧让你效率翻倍

“这200张照片怎么传给女儿?微信发不了,邮箱附件又超限……”62岁的张阿姨对着电脑犯愁时,儿子只用了3分钟就把照片压缩成一个文件,还教她:“以后用压缩软件,比打包行李还方便!”职场人更懂这...

电脑解压缩软件推荐——7-Zip:免费、高效、简洁的文件管理神器

在日常工作中,我们经常需要处理压缩文件。无论是下载软件包、接收文件,还是存储大量数据,压缩和解压缩文件都成为了我们日常操作的一部分。而说到压缩解压软件,7-Zip绝对是一个不可忽视的名字。今天,我就来...

设置了加密密码zip文件要如何打开?这几个方法可以试试~

Zip是一种常见的压缩格式文件,文件还可以设置密码保护。那设置了密码的Zip文件要如何打开呢?不清楚的小伙伴一起来看看吧。当我们知道密码想要打开带密码的Zip文件,我们需要用到适用于Zip格式的解压缩...

大文件想要传输成功,怎么把ZIP文件分卷压缩

不知道各位小伙伴有没有这样的烦恼,发送很大很大的压缩包会受到限制,为此,想要在压缩过程中将文件拆分为几个压缩包并且同时为所有压缩包设置加密应该如何设置?方法一:使用7-Zip免费且强大的文件管理工具7...

高效处理 RAR 分卷压缩包:合并解压操作全攻略

在文件传输和存储过程中,当遇到大文件时,我们常常会使用分卷压缩的方式将其拆分成多个较小的压缩包,方便存储和传输。RAR作为一种常见的压缩格式,分卷压缩包的使用频率也很高。但很多人在拿到RAR分卷...

2个方法教你如何删除ZIP压缩包密码

zip压缩包设置了加密密码,每次解压文件都需要输入密码才能够顺利解压出文件,当压缩包文件不再需要加密的时候,大家肯定想删除压缩包密码,或是忘记了压缩包密码,想要通过删除操作将压缩包密码删除,就能够顺利...

速转!漏洞预警丨压缩软件Winrar目录穿越漏洞

WinRAR是一款功能强大的压缩包管理器,它是档案工具RAR在Windows环境下的图形界面。该软件可用于备份数据,缩减电子邮件附件的大小,解压缩从Internet上下载的RAR、ZIP及其它类...

文件解压方法和工具分享_文件解压工具下载

压缩文件减少文件大小,降低文件失效的概率,总得来说好处很多。所以很多文件我们下载下来都是压缩软件,很多小伙伴不知道怎么解压,或者不知道什么工具更好,所以今天做了文件解压方法和工具的分享给大家。一、解压...

[python]《Python编程快速上手:让繁琐工作自动化》学习笔记3

1.组织文件笔记(第9章)(代码下载)1.1文件与文件路径通过importshutil调用shutil模块操作目录,shutil模块能够在Python程序中实现文件复制、移动、改名和删除;同时...

Python内置tarfile模块:读写 tar 归档文件详解

一、学习目标1.1学习目标掌握Python内置模块tarfile的核心功能,包括:理解tar归档文件的原理与常见压缩格式(gzip/bz2/lzma)掌握tar文件的读写操作(创建、解压、查看、过滤...

使用python展开tar包_python拓展

类Unix的系统,打包文件经常使用的就是tar包,结合zip工具,可以方便的打包并解压。在python的标准库里面有tarfile库,可以方便实现生成了展开tar包。使用这个库最大的好处,可能就在于不...

银狐钓鱼再升级:白文件脚本化实现GO语言后门持久驻留

近期,火绒威胁情报中心监测到一批相对更为活跃的“银狐”系列变种木马。火绒安全工程师第一时间获取样本并进行分析。分析发现,该样本通过阿里云存储桶下发恶意文件,采用AppDomainManager进行白利...

ZIP文件怎么打开?2个简单方法教你轻松搞定!

在日常工作和生活中,我们经常会遇到各种压缩文件,其中最常见的格式之一就是ZIP。ZIP文件通过压缩数据来减少文件大小,方便我们进行存储和传输。然而,对于初学者来说,如何打开ZIP文件可能会成为一个小小...

Ubuntu—解压多个zip压缩文件.zip .z01 .z02

方法将所有zip文件放在同一目录中:zip_file.z01,zip_file.z02,zip_file.z03,...,zip_file.zip。在Zip3.0版本及以上,使用下列命令:将所有zi...

如何使用7-Zip对文件进行加密压缩

7-Zip是一款开源的文件归档工具,支持多种压缩格式,并提供了对压缩文件进行加密的功能。使用7-Zip可以轻松创建和解压.7z、.zip等格式的压缩文件,并且可以通过设置密码来保护压缩包中的...

取消回复欢迎 发表评论: