首页
学习
活动
专区
圈层
工具
发布

Python 关于面向对象的 6 个问题

本文写给初学 Python 的朋友,试图讲明白以下问题: 0、什么是类和对象? 1、即然有了函数,为什么还要有类? 2、Python 如何定义 公有/保护/私有 属性/方法?...什么是类和对象 先说对象,对象通常有两层意思,指行动或思考时作为目标的事物或特指恋爱的对方。在编程的世界里,对象就是客观世界中存在的人、事、物体等实体在计算机逻辑中的映射。...编程时,你可以将对象映射成任何你想映射的东西,只不过,映射的如果更符常规时,代码更容易使用和理解,也更有利于后续的快速迭代和扩展。在 Python 的世界里,万物皆对象。...函数是为了解决代码复用的,但是函数是过程思维,太具体,太具体的东西就会有很多重复,因此我们还需要对问题进行抽象,而类就是一种抽象,抽象的类,其可复用性更高,更容易面对复杂的业务逻辑,也会减轻程序员编程时的记忆压力...Python 并不会阻碍程序员去访问类的私有属性或私有方法,Python 选择相信程序员。

65021
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    logstash增量同步MySQL关于sql_last_value取值失败的问题

    官网 https://www.elastic.co/guide/en/logstash/7.17/plugins-inputs-jdbc.html#plugins-inputs-jdbc 常见问题 use_column_value...在 2024-01-01T01:00:00.000+0800 已经调度过一次增量任务并且更新了 tracking_column 的值,但是MySQL在 2024-01-01T02:00:00.000+...0800 写入了一条时间为 2023-12-31T14:25:36.000+0800 的数据(该场景我们称之为离线任务),这个时候就会出现这1条历史数据始终无法被 logstash 同步到 ES 的情况...因此我们就需要在 input schedule 避开离线任务调度的时间,否则可能会出现丢数问题,如 schedule => "*/5 9-23 * * *" 贴一个线上用户的例子:该用户使用 logstash...实时将上游 MySQL 数据增量同步到 ES,但因上游 MySQL 的数据也并非真正数据源,存在每天凌晨跑批从其他地方同步数据的情况。

    1.3K50

    python 关于高级特性的问题

    9. hasattr()、getattr()、setattr() 的用法   10. 请列举你知道的 Python 的魔法方法及用途。   11. 如何知道一个 Python 对象的类型?   ...答:Python 不像 C++,Java 等语言一样,他们可以不用事先声明变量类型而直接对变量进行赋值。对 Python 语言来讲,对象的类型和内存都是在运行时确定的。...__init__在 Python 的类定义中用的最多。   2 __new__:   __new__是对象实例化时第一个调用的方法,它只取下 cls 参数,并把其他参数传给 __init__ 。...它并非实现了语句 del x   11.如何知道一个 Python 对象的类型?   答:   可以通过 type 方法   12.Python 的传参是传值还是传址?   ...答:   Python 中的传参即不是传值也不是传地址,传的是对象的引用。

    64910

    Python 中关于面向对象的相关知识

    不同对象调用相同方法得出不同结果,增加了代码的灵活度; 对象 类创建出来的一个具体存在,可直接使用,拥有类所具有的属性与方法; 类与对象的关系 类是模版,对象根据类创建而出,先有类再有对象; 类只有一个...在创建类之后,对象可以在外部直接使用.属性名 给对象增加属性,但是这种方式不推荐使用,因为它并没有将属性封装到类的内部中,只是对象临时的属性; 在初始化方法内部定义属性之后,在使用该类创建新对象时,所创建的新对象都会拥有该属性...对象从调用类名()创建时生命周期即开始; 对象生命周期内,既可以访问对象属性,也可以调用对象方法; 对象的__del__方法一旦调用,对象的生命周期即结束; 身份运算符 功能:用于比较两个对象内存地址是否一致...虽然私有属性或方法我们都可以访问,但日常开发中最好不要使用这种方式来访问私有属性或方法; 注意 内置函数__str__必须返回一个字符串; 对象的方法内部,可以直接访问对象属性; 对于多个对象之间,各自的属性是互不干扰的...实例化 每个对象实例化是都有自己独立的内存空间,用于保存各自不同的属性; 而多个对象的方法在内存中只有一份,在调用方法时需要吧对象的引用传递到方法内部; 类方法 语法 @classmethod def

    44330

    关于安防设备里的系统时间同步问题

    在分析原因之前,我们先来了解几个关于时间的概念。 安防设备时间显示错乱原因分析及解决办法 监控图像画面上显示的时间日期1970年X年X月,或者2000年X年X月,这个是设备自己本地时间。...此时我们要考虑是否安防设备上时间相关的硬件是否有故障了。比如DVR/NVR主板上的纽扣电池是否没电或者接触不良,摄像机芯片上的电池,晶振或者时钟芯片是否有问题了。...这个问题的产生一般和设备的时钟芯片精度有关。此时可以选择手动调整设备时间或者同步NTP时间服务器的方式来自动校准时间,以保持时间的精准性。 设备时区显示不对。首先排除是否时区设置不对。...另一方面和设备厂家确认,设备本身的时区转换功能是否有问题。 0.5时区,1/4时区,夏令时不支持问题。这几个是设备本身问题。...有些设备厂家早期在开发产品时,忽略了这几个问题,选用的时间库,时间类函数比较老旧,不支持0.5时区,1/4时区,夏令时功能,后续产品一直延续下来。可以反馈给厂家,让其优化产品固件。

    2.2K31

    关于数组合并及对象去重的问题

    写这篇文章是源于群内的朋友的问题,今天早上,像往常一样摸鱼,发现一个妹子发群里问了一个问题。 事情的经过大概是这样的 ?...image.png 总的来说就是后端给他返回了一个对象,对象内有2个数组,2个数组中的内容不一样,但是有相同的id,他需要把们合并到一个数组中,并且保留不重复的属性 简单的模拟一下妹子的数据结构,外层对象就不写了...{id:2,name:"bbb",time:"201900",c:'333'}, {id:3,name:"ccc"}, {id:4,time:"201011"}, ] 好了开始处理问题...,其中使用到了数组的一些方法concat,push,filter,和for...of方法遍历对象 处理代码如下 const OrderNoList=[ {id:1,name:"aaa",},...最后得到了一个赞 不过还是希望更好一点的解法,哈哈哈 ?

    1.4K31

    关于 python ImportError: No module named 的问题

    然后又在 cygwin 下安装时同样的问题,这下 cygwin 源码编译也不行了,因为会调用很多 linux 特有的类库。 虽然最后解决了 import 的问题,但是又报了其它错。...python -c"import sys;print '当前的python是:'+sys.prefix;print '\n'.join(sys.path)" 为解决这个问题,可以有以下方法: 将自己做的...; print get_python_lib()"  但是这样做会导致一个问题,即各类模块都放到此文件夹的话,会导致乱的问题,这一点是显而易见的。  ...注意,也不创建子文件夹,再将自己的模块放到子文件夹解决问题,这会导致使用import 语句时错误。...关于与python相关的环境变量有那些,请参考: http://docs.python.org/using/cmdline.html  在页面上找到PYTHONPATH 以下是该环境变量的描述: PYTHONPATH

    3.1K50

    关于python中显存回收的问题

    然后在网上找到了一些类似的问题,比如参考链接中的1、2、3、4,都是在一些操作后发现未释放显存,这里提供一个实例问题和处理的思路,如果有更好的方案欢迎大家在评论区留言。...,在python的程序中已然找不到这个对象,但是在显存中的数据并未被消除。...解决思路 暂时还不清楚这个问题发生的机制,在一些特定场景下出现僵尸进程的问题似乎跟我复现的这个场景也有所不同。...这么一来,我们既可以实现对象的即时销毁,也通过进程控制的机制确保在显存中占用的位置被清空。...而在之后6秒的sleep时间中,这一块内存占用是被清空了的,这也就达到了我们最初的目的。当然,最重要的是,我们依然可以从函数中获取到返回值,这就确保后面有需要存储或者使用到的参数不被同步的销毁。

    3K10

    关于python中pika模块的问题

    工作中经常用到rabbitmq,而用的语言主要是python,所以也就经常会用到python中的pika模块,但是这个模块的使用,也给我带了很多问题,这里整理一下关于这个模块我在使用过程的改变历程已经中间碰到一些问题...,查到关于这个问题的连接有: https://stackoverflow.com/questions/49154404/pika-threaded-execution-gets-error-505-unexpected-frame...,这样当再次运行程序之后,就不会在出现之前的问题 关于断开重连 上面的代码虽然不会在出现之前的错误,但是这个程序非常脆弱,当rabbitmq服务重启或者断开之后,程序并不会有重连接的机制,所以我们需要为代码添加重连机制...这个参数默认没有设置,那么这个heatbeat的心跳时间,默认是不设置的,如果不设置的话,就是根绝服务端设置的,因为这个心跳时间是和服务端进行协商的结果 当这个参数设置为0的时候则表示不发送心跳,服务端永远不会断开这个连接...从上图我们可以删除最后服务端和客户端协商的结果就是580,这样当时间到了之后,如果没有数据往来,那么就会出现连接被服务端断开的情况了 特别注意  需要特别注意的是,经过我实际测试python的pika=

    2.8K20

    关于python安装lxml插件的问题

    文章只是介绍自己安装时从安装不上到安装后报错,再到安装成功的心路历程,并不代表广大欧皇也会会出现同类型的问题,也不是总结和汇总各种出问题的原因....直接进入正题,首先我这边是win环境,电脑上装的是python3.8和anaconda(python3.7),确认环境变量没有问题,环境变量配置的是python3.8,在控制台中直接pip install.../lxml/#files 进去以后竟然没找到关于python3.8的lxml安装文件,我滴乖乖,我安装的python版本太高了?...无奈只能放弃在python3.8上安装lxml 还是老老实实,在anaconda上import吧,当然安装anaconda的时候这些常用的包都是安装好的,弄好环境以后,发现执行第一句话就报错 from ...python版本和安装包是否兼容,不兼容的话就别走这条路了,老老实实换python版本(一般是安装版本太新导致的), 然后确定python版本没有问题以后安装不成功,基本是你设置的问题,环境变量确定一下

    2.8K20

    python3中关于时间格式的操作

    在写python时,很多时候需要用的时间函数,如:记录当前时间,以时间命名文件,或是比较时间的先后等,这里记录一下关于常用时间模块的方法。...环境: ubuntu16.04 python3.5.2 用到两个模块:time 和 datetime 时间戳 1970年1月1日之后的秒,即:time.time() 格式化的字符串...这个需要注意,在不同的系统上含义不同。在UNIX系统上,它返回的是"进程时间",它是用秒表示的浮点数(时间戳)。而在WINDOWS中,第一次调用,返回的是进程运行的实际时间。...而第二次之后的调用是自第一次调用以后到现在的运行时间。...,参数也可是time.localtime()的返回,返回的结果是可读的时间描述字符串, 如参数为空,默认返回当前的时间。

    1.2K10

    关于python3.7 tensorflow 出现的问题

    问题描述 目前tensorflow还没有正式对python3.7支持,百度一下发现以下解决方法 https://www.jianshu.com/p/1a3e194886b4 就是更改版本名称,但是装上之后发现以下问题...UnboundLocalError: local variable 'a' referenced before assignment 此问题可参考 https://github.com/tensorflow...tf-nightly-gpu/1.13.0.dev20190118/#files(GPU) 安装之前会有一些依赖包安装,不同环境可能不一样,看错误信息,需要什么就装上,依赖包可在上一个地址下载 我的环境装了以下几个...install tf_nightly-1.13.0.dev20190123-cp37-cp37m-manylinux1_x86_64.whl 安装完之后可正常使用 注意:此版本为非正式版,可能会出现未知的问题...,比较重要的项目慎重安装

    1.9K10

    关于时间复杂度和空间复杂度的问题

    对于程序员来说,了解算法的时间复杂度和空间复杂度是至关重要的。时间复杂度和空间复杂度是评估算法性能的指标,可以帮助我们预估算法的执行时间和资源消耗情况。...时间复杂度描述了算法执行所需的时间与输入规模之间的关系。一般使用大O符号来表示时间复杂度。在进行时间复杂度分析时,通常需要计算算法中基本操作的执行次数,并考虑最坏情况下的执行时间。...根据算法的执行时间增长速度,常用的时间复杂度有以下几种: 常数时间复杂度(O(1)):无论输入规模大小,算法的执行时间都保持不变。例如,访问一个数组元素的操作。...平方时间复杂度(O(n^2)):算法执行时间与输入规模的平方成正比。例如,嵌套循环中的算法。 指数时间复杂度(O(2^n)):算法执行时间与输入规模的指数成正比。例如,穷举搜索算法。...掌握数据结构和算法的复杂度分析方法是程序员必备的基础知识,对于编写高效的代码和解决复杂的问题非常有帮助。 图片来源:https://baijiahao.baidu.com/s?

    20610

    关于php对象的引用传值与cow问题记录

    php 问题缘起 发这篇文章其实挺羞愧的,应该是自己的基础不够扎实,我记得好久之前(应该是初学的时候)是知道这个事情的,各种赋值引用都自己测试过,但是苦于一直没有使用到,忘光了。...测试数据: 这里我只用这三条数据进行测试,来说明php对象的引用传值。...其实这个时候的b已经变成了b = 总结: 一般我们在普通赋值中,都会触发php的cow机制,但是: 在php5以后,所有对象都是引用传递,除非显式调用clone $object。...所以,应尽量避免函数内操作外部对象。 课后作业: 请问下面代码会输出什么?欢迎在下方评论写下你的答案。...)->get(); $b = $tree2->where('name', 102)->get(); return $b; } } 扩展 : PHP底层分析: 关于写时复制

    37410
    领券