广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python中面向对象的使用限制有哪些
  • 541
分享到

python中面向对象的使用限制有哪些

2023-06-14 15:06:46 541人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

这篇文章主要介绍python中面向对象的使用限制有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Python主要应用领域有哪些1、云计算,典型应用OpenStack。2、WEB前端开发,众多大型网站均为pytho

这篇文章主要介绍python面向对象的使用限制有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

Python主要应用领域有哪些

1、云计算,典型应用OpenStack。2、WEB前端开发,众多大型网站均为python开发。3.人工智能应用,基于大数据分析深度学习而发展出来的人工智能本质上已经无法离开python。4、系统运维工程项目自动化运维的标配就是python+Django/flask。5、金融理财分析,量化交易,金融分析。6、大数据分析。

1、不需要使用面向对象。

举个例子,例如下面的代码根本不需要使用面向对象。

class apiClient:   def __init__(self, root_url: str, session_cls: sessionmaker):       self.root_url = root_url       self.session_cls = session_cls    def construct_url(self, entity: str) -> str:       returnf"{self.root_url}/v1/{entity}"    def get_items(self,entity: str) -> List[Item]:       resp = requests.get(self.construct_url(entity))       resp.raise_for_status()       return [Item(**n) for n in resp.JSON()["items"]]    def save_items(self, entity: str) -> None:       with scoped_session(self.session_cls)as session:            session.add(self.get_items(entity))  class ClientA(ApiClient):   def construct_url(self, entity: str) -> str:       returnf"{self.root_url}/{entity}"  class ClientB(ApiClient):   def construct_url(self, entity: str) -> str:       returnf"{self.root_url}/a/special/place/{entity}" client_a = ClientA("https://client-a",session_cls)client_a.save_items("bars")

我们在这里使用了面向对象,因为我们想把root_url绑定到某个对象,我们不想每次都传递sessionmaker。我们还想使用继承,在调用的途中访问一种方法。

但是,只有数据传输和函数才能实现吗?

@dataclassclass Client:   root_url: str   url_layout: str client_a = Client(   root_url="Https://client-a",   url_layout="{root_url}/{entity}",) client_b = Client(   root_url="https://client-b",   url_layout="{root_url}/a/special/place/{entity}",) def construct_url(client: Client, entity: str) -> str:   returnclient.url_layout.fORMat(root_url=client.root_url, entity=entity) def get_items(client: Client, entity: str) -> List[Item]:   resp = requests.get(construct_url(client, entity))   resp.raise_for_status()   return [Item(**n) for n in resp.json()["items"]] def save_items(client: Client, session_cls: session_cls, entity: str) -> None:   withscoped_session(session_cls) as session:       session.add(get_items(client, entity)) save_items(client_a,session_cls, "bars")

必须随时传达Client和session_cls。

但是有什么关系呢?代码量甚至减少了10%。这样写出来的代码很容易理解,不需要使用对象。

有人管理这种写法叫做函数袋。也就是说,整个代码由有类型的数据和很多模块作用域的函数构成。

那么,全局变量如何处理呢?您可以参考本文(https://leontrolski.GitHub.io/sane-config.html),在整个应用程序的生命周期内重用config或db的session。

界面、抽象类怎么办?其实你不需要它们,直接写代码就可以了。从平心来看,Python有类型标记后,函数袋的风格开始发挥真正的魅力。

不纯粹的函数怎么办?

如果您想使用纯函数编程,您可能想编写纯类别,然后使用不纯的适配器例子进行一些处理:getting-the-curent-datetime/API-calls/talking-to-the-db/other-impure-stuff。这个想法很好。事实上,你可以直接使用freezegun、responses等方法来避免大量的麻烦。

2、例外。

但是,也有例外的情况

你可能注意到,重构的代码中加入了@dataclass,它们只是记录类型。python3可直接支持这些,无需使用套路类。

使用Exception的子类没问题。使用try:..exceptSomeClass:..基本上形成层次,但没关系。不要太复杂。

Enum和上面一样,非常适合Python。

在极其罕见的情况下(至少在应用程序开发中很少见),你可能会想到一种非常有用的类型,然后到处使用ndas.DataFrame/sqlalchemy.Session一样。但一般来说,不要欺骗自己,也不要欺骗自己,说我们正在建立一个伟大的应用程序。谦虚使人进步。

面向对象的弊端。

在这篇文章的开头,我说对方本身没有什么问题,其实对方不仅没有帮助,还经常混淆问题,鼓励不好的做法

鼓励对方修改数据。函数非常反对修改参数。如果你不相信,你可以试试,但不要生气。

面向对象只是回归的全局变量。无法在函数之间共享数据。self强制使用更小的状态空间制作容易测试的函数。

混合数据和函数会加剧序列化的难度,而在当今RESTAPI流行的情况下,序列化是非常有用的。

面向对象带来疯狂的继承体系统,关于这个话题的讨论遍地都是。

以上是“python中面向对象的使用限制有哪些”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网Python频道!

--结束END--

本文标题: python中面向对象的使用限制有哪些

本文链接: https://www.lsjlt.com/news/271731.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python中面向对象的使用限制有哪些
    这篇文章主要介绍python中面向对象的使用限制有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!python主要应用领域有哪些1、云计算,典型应用OpenStack。2、WEB前端开发,众多大型网站均为Pytho...
    99+
    2023-06-14
  • Python中面向对象的特征有哪些
    这篇文章给大家分享的是有关Python中面向对象的特征有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。面向对象三大特征介绍封装(隐藏):隐藏对象的属性和实现细节,知对外提供必要的方法。继承:让子类拥有父类特征...
    99+
    2023-06-29
  • python面向对象有哪些属性
    python面向对象具有封装、继承、多态三大属性封装封装是指将数据或属性隐藏在内部,而不让外部看到;封装两个层面,第一个层面是类就是一个容器,本身就是一种封装;第二个层面在类中定义私有的属性,只在类的内部使用,外部无法访问;封装可以是类,可...
    99+
    2022-10-22
  • Python面向对象知识点有哪些
    今天就跟大家聊聊有关Python面向对象知识点有哪些,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。类: 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性...
    99+
    2023-06-17
  • Python关于面向对象的问题有哪些
    这篇“Python关于面向对象的问题有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Python关于面向对象的问题有哪些...
    99+
    2023-07-06
  • Java中面向对象的特性有哪些
    今天就跟大家聊聊有关Java中面向对象的特性有哪些,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。面向对象编程有三大特性:封装、继承、多态。   &nbs...
    99+
    2023-05-31
    java 面向对象 ava
  • c++面向对象的特性有哪些
    C++面向对象的特性有以下几个: 封装(Encapsulation):将数据和操作数据的函数封装在一起,形成一个类,对外部使用者...
    99+
    2023-10-24
    c++
  • VB面向对象的优点有哪些
    本篇内容主要讲解“VB面向对象的优点有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“VB面向对象的优点有哪些”吧!面向对象这个词语对于搞开发的程序员所熟悉,在JAVA中最能体现面向对象这个词...
    99+
    2023-06-17
  • 重定向对象和同步对象在 Python 中的使用技巧有哪些?
    Python 是一门非常流行的编程语言,它具有简单易用、高效、灵活等特点,因此被广泛应用于各种领域。在 Python 中,重定向对象和同步对象是非常重要的概念,它们可以帮助我们更好地控制程序的运行。在本文中,我们将介绍重定向对象和同步对象在...
    99+
    2023-07-24
    重定向 对象 同步
  • java面向对象面试题的考点有哪些
    小编给大家分享一下java面向对象面试题的考点有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Java有哪些集合类Java中的集合主要分为四类:1、List列...
    99+
    2023-06-14
  • Python面向对象里常见的内置成员有哪些
    这篇文章主要介绍“Python面向对象里常见的内置成员有哪些”,在日常操作中,相信很多人在Python面向对象里常见的内置成员有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python面向对象里常见的内...
    99+
    2023-07-06
  • python面向对象的使用案例
    这篇文章给大家分享的是有关python面向对象的使用案例的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。面向对象1. 创建支持With语句的对象我们都知道如何使用打开或关闭语句,例如打开文件或获取锁,但是如何实现自...
    99+
    2023-06-27
  • Python面向对象的类和对象怎么使用
    这篇文章主要介绍“Python面向对象的类和对象怎么使用”,在日常操作中,相信很多人在Python面向对象的类和对象怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python面向对象的类和对象怎么使用...
    99+
    2023-06-22
  • VB.NET面向对象编程的特性有哪些
    这篇文章主要为大家展示了“VB.NET面向对象编程的特性有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“VB.NET面向对象编程的特性有哪些”这篇文章吧。类在VB.NET面向对象编程技术中,...
    99+
    2023-06-17
  • C#中面向对象的相关知识点有哪些
    本篇内容介绍了“C#中面向对象的相关知识点有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!switch和字典前文提到过,有个游戏里面有个...
    99+
    2023-07-05
  • 重定向对象在 Python 中的应用场景有哪些?
    在 Python 中,重定向对象是一种非常有用的工具,可以帮助我们实现各种各样的功能。本文将介绍重定向对象的基本概念、用法以及在 Python 中的应用场景。 什么是重定向对象? 重定向对象是一个 Python 对象,它可以将标准输入、标...
    99+
    2023-07-24
    重定向 对象 同步
  • javascript面向对象编程的知识点有哪些
    这篇文章主要介绍了javascript面向对象编程的知识点有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇javascript面向对象编程的知识点有哪些文章都会有所收获,下面我们一起来看看吧。函数的定义和使...
    99+
    2023-06-29
  • Python中的面向对象是否没有意义
    Python中的面向对象是否没有意义,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。近来,许多人都在抨击面向对象,虽然我不认为面向对象本身有什么问题,但我觉得至少在 Pyth...
    99+
    2023-06-15
  • java数组和面向对象的知识点有哪些
    这篇文章主要介绍“java数组和面向对象的知识点有哪些”,在日常操作中,相信很多人在java数组和面向对象的知识点有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”java...
    99+
    2022-10-19
  • JAVA 面向对象之多态的知识点有哪些
    本篇内容介绍了“JAVA 面向对象之多态的知识点有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1. 概念多态是面向对象程序设计(OOP...
    99+
    2023-07-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作