python类用法(四)

简介: python类用法(四)

python类用法(四)

一.抽象基类与接口

抽象基类(Abstract Base Classes, ABCs)是Python中用于定义接口的机制。它们允许我们定义一些抽象方法,这些方法在子类中必须被实现。这有助于确保子类遵循特定的接口规范。

python复制代码

 

from abc import ABC, abstractmethod

 

 

 

class Shape(ABC):

 

@abstractmethod

 

def area(self):

 

pass 

 

 

 

@abstractmethod

 

def perimeter(self):

 

pass 

 

 

 

class Circle(Shape):

 

def __init__(self, radius):

 

self.radius = radius

 

 

 

def area(self):

 

return 3.14 * self.radius ** 2 

 

 

 

def perimeter(self):

 

return 2 * 3.14 * self.radius

 

 

 

# 由于Circle类实现了Shape类的所有抽象方法,所以它是一个有效的Shape子类

二.类的私有属性和方法

在Python中,我们没有一个显式的关键字或语法来声明私有属性和方法,但通常我们遵循一个约定:使用单个下划线_前缀来表示保护属性或方法,使用双下划线__前缀来表示私有属性或方法。尽管Python并不强制限制访问这些属性或方法,但这是一种约定俗成的做法,用于提醒其他开发者这些属性或方法应该是“私有的”,即不应直接从类的外部访问。

python复制代码

 

class PrivateAttributes:

 

def __init__(self):

 

self._protected_attribute = "This is protected" 

 

self.__private_attribute = "This is private" 

 

 

 

def show_protected(self):

 

print(self._protected_attribute)

 

 

 

def __show_private(self):

 

print(self.__private_attribute)

 

 

 

# 创建对象

 

obj = PrivateAttributes()

 

 

 

# 访问保护属性(虽然可以,但不建议)

 

print(obj._protected_attribute) # 输出:This is protected

 

 

 

# 调用保护方法

 

obj.show_protected() # 输出:This is protected

 

 

 

# 尝试访问私有属性(会导致AttributeError)

 

# print(obj.__private_attribute) # AttributeError: 'PrivateAttributes' object has no attribute '__private_attribute'

 

 

 

# 尝试调用私有方法(同样会导致AttributeError)

 

# obj.__show_private() # AttributeError: 'PrivateAttributes' object has no attribute '__show_private'

虽然Python没有强制私有性,但使用双下划线前缀会在内部对属性名称进行“名称重整”(name mangling),这增加了从类外部访问这些属性的难度。名称重整会将属性名转换为包含类名的形式,例如_ClassName__private_attribute

 

总结与展望

Python的类提供了强大的面向对象编程能力,通过封装、继承、多态等特性,使得代码更加模块化、可重用和可维护。在实际开发中,合理设计类结构、利用特殊方法、装饰器以及元类等高级特性,可以写出高效、健壮的代码。

随着Python生态的不断发展,越来越多的库和框架采用了面向对象的设计模式,掌握类的用法对于深入理解这些库和框架的工作原理、高效使用它们具有重要意义。未来,随着Python在数据科学、机器学习、Web开发等领域的广泛应用,类的使用将变得更加普遍和重要。因此,持续学习和掌握类的用法,对于Python开发者来说是非常有价值的。

 

 

目录
相关文章
|
27天前
|
测试技术 Python
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
103 31
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
|
2月前
|
数据采集 存储 XML
python实战——使用代理IP批量获取手机类电商数据
本文介绍了如何使用代理IP批量获取华为荣耀Magic7 Pro手机在电商网站的商品数据,包括名称、价格、销量和用户评价等。通过Python实现自动化采集,并存储到本地文件中。使用青果网络的代理IP服务,可以提高数据采集的安全性和效率,确保数据的多样性和准确性。文中详细描述了准备工作、API鉴权、代理授权及获取接口的过程,并提供了代码示例,帮助读者快速上手。手机数据来源为京东(item.jd.com),代理IP资源来自青果网络(qg.net)。
|
3月前
|
Python
Python三引号用法与变量详解
本文详细介绍了Python中三引号(`"""` 或 `'''`)的用法,包括其基本功能、如何在多行字符串中使用变量(如f-string、str.format()和%操作符),以及实际应用示例,帮助读者更好地理解和运用这一强大工具。
159 2
|
4月前
|
Java C++ Python
Python基础---类
【10月更文挑战第10天】Python类的定义
50 2
|
4月前
|
索引 Python
python-类属性操作
【10月更文挑战第11天】 python类属性操作列举
45 1
|
4月前
|
缓存 测试技术 开发者
深入理解Python装饰器:用法与实现
【10月更文挑战第7天】深入理解Python装饰器:用法与实现
38 1
|
4月前
|
传感器 大数据 数据处理
深入理解Python中的生成器:用法及应用场景
【10月更文挑战第7天】深入理解Python中的生成器:用法及应用场景
156 1
WK
|
4月前
|
Python
Python类命名
在Python编程中,类命名至关重要,影响代码的可读性和维护性。建议使用大写驼峰命名法(如Employee),确保名称简洁且具描述性,避免使用内置类型名及单字母或数字开头,遵循PEP 8风格指南,保持项目内命名风格一致。
WK
36 0
|
4月前
|
Python
深入了解Python中星号变量的特殊用法
深入了解Python中星号变量的特殊用法
46 0
|
4月前
|
PyTorch 测试技术 算法框架/工具
Python中Thop库的常见用法和代码示例
肆十二在B站分享了关于THOP(Torch-OpCounter)的实战教学视频。THOP是一个用于计算PyTorch模型操作数和计算量的工具,帮助开发者评估模型复杂度和性能。本文介绍了THOP的安装、使用方法及基本用例,包括如何计算模型的FLOPs和参数量。
255 0

热门文章

最新文章