《Beginning Python From Novice to Professional》学习笔记九:More Abstraction

3天干完6个月的活,Claude把模型搬上AMD 一条挺刺激的消息:Anthropic 给投资人的材料里有一张幻灯片,写着它的 Claude Mythos Preview 只花了大约​,就摸清了怎么让另一个 Claude 模型在 AMD 的 MI355X 上跑起来。同一处还写了个对照数字:过去给一块新芯片做推理适配,通常要几十名工程师、​。3 天对 6 个月,这个比值太扎眼,当天中文互联网上就冒出一堆「英伟达的护城河塌了」的说法。我把能翻到的材料都翻了一遍,越看越觉得,塌掉的那一小块是真的,可塌的位置和很多人想的不一样。 阅读详情
0.类的私有性
Python中对象的属性是可以从外部访问的,本身不直接支持私有性,对此的解释是
Isn’t it enough that each object manages its own attributes?
在Python中如果要使方法或属性从外部不可访问,则必须在名字前加上两个下划线 
 
  
方法__inaccessible则外部不可见,但实际在类的定义时,双下划线开始的方法会被自动“转换”为名字前加上单下划线再加上类名
Secretive._Secretive__inaccessible
---> <unbound method Secretive.__inaccessible>
s._Secretive__inaccessible()
---> Bet you can't see me...

1.创建类

习惯上第一个参数都是self,传递参数时不用写出。self是用来甄别不同的实例对象的
注意此时name属性对外是可见的。

此外实例中的函数可动态更改(注意不是类的函数)
def fun():
    print "haha, You'll be terminated!"
    
foo.greet = fun
foo.greet()   ---> haha, You'll be terminated!

以上的方法均为bound method,是与某个实例绑定的。

下面是个综合例子,结合函数一章中的几个技巧
函数没有返回值
f.goodFood
---> ['SPAM', 'Eggs', 'Bacon', 'Rat', 'Spring Surprise']
menu = ['Filet Mignon', 'Pasta', 'Pizza', 'Eggs', 'Bacon', 'Tomato', 'SPAM']
rec = filter(f.likes, menu)
rec   ---> ['Eggs', 'Bacon', 'SPAM']
reduce(f.prefers, rec)   ---> 'SPAM'


2.类的名字空间


m1 = MemberCounter()
m1.init()
m1.add()
m2 = MemberCounter()
m2.init()
m2.add()
MemberCounter.members   ---> 2
m2.members  ---> 2
m2.mymember  ---> 1

但是一旦有实例对class中的变量赋值,该变量即被Rebind到该实例
m1.members = "hello"
m1.members   ---> "hello"
m2.members   ---> 2


3.指定SuperClassic(继承)


4.判断父子关系
issubclass(SPAMFilter, Filter)   ---> True
issubclass(Filter, SPAMFilter)   ---> False

也可以直接得到父类
SPAMFilter.__bases__
---> (<class __main__.Filter at 0x171e40>,)
Filter.__bases__   ---> ()


5.判断是否为其实例
s = SPAMFilter()
isinstance(s, SPAMFilter)   ---> True
isinstance(s, Filter)   ---> True  
#注意这里也是True
isinstance(s, str)   ---> False
也可以直接得到类信息
s.__class__   --->
<class __main__.SPAMFilter at 0x1707c0>


6.多重SuperClass(多重继承)


7.对接口的检测
Python中不需要显式地写出接口,你可检测它
tc = TalkingCalculator()
hasattr(tc, 'talk')   ---> True
hasattr(tc, 'fnord')   ---> False
还可以检测是否可调用
callable(getattr(tc, 'talk', None))   ---> True
callable(getattr(tc, 'fnord', None))   ---> False

#其中getattr返回函数对象,且可以提供默认值,此处为None
#getattr的逆函数为setattr,它可以为对象增加一个属性
setattr(tc, 'name', 'Mr. Gumby')
tc.name   ---> 'Mr. Gumby'

#obj.__dict__可返回obj对象的所有属性。
pycharm添加Anaconda解释器显示不出来 因为我之前下载的是pycharm最新版本2024.1的,所以我抱着试一试的心态卸载重装了2021.3.3的,创建新文件的时候立刻就自己识别好了conda环境。就是图中画圈的地方,之前一直显示为python的图标,但是再Python Interpreter后面跟的路径确实是我下载anaconda的地方。另外一种方法就是使用Virtualenv Environment方式配置,但是我的pycharm还是没有识别出conda的图标。首先是这位的方法,先添加系统解释器,再重启,但是我的图标还是python。 阅读详情

相关推荐

三相SVPWM逆变器双闭环PI解耦控制:从dq坐标系到参数整定实战

本文深入解析了三相SVPWM逆变器的双闭环PI解耦控制技术。通过引入dq坐标系,将交流量转换为直流量,并结合前馈补偿实现电流环的解耦控制。文章详细阐述了从数学模型推导、控制器设计到参数整定与SVPWM实现的完整流程,为工程师提供了从理论到实战的系统性指导。

weixin_28292761的博客 405

《Beginning Python From Novice to Professional》学习笔记八:Abstraction

Laziness Is a Virtue --- Real programmers are lazy. Not lazy in a bad way, but in the sense that they don’t do unnecessary work. 1.创建函数 def fibs(num): result = [0, 1] for i in range(num-2)

thy专栏 851

ADS学习笔记 2. 低噪声放大器设计

ADS学习笔记 2. 低噪声放大器设计。设计了一个中心频率433MHz,增益18.206dB,NF=0.134dB,S11带宽较好的低噪声放大器

u014087103的博客 9510

Python装饰器学习

在《Core Python Programming 2nd》中学习到了装饰器,这对我来说是个完全陌生的语法,第一遍愣是没看懂,很有必要记一下。 第一眼看到这个词Decorator,我联想到了DP中的Decorator模式,后来才知道完全不是这么一回事。(再次鄙视一下国内浮躁的博客,我google了一下,几乎千篇一律都是什么锁同步装饰器、超时装饰器,我对原作者表达敬仰,可是大家都是转载就不像

thy专栏 5万+

利用Python脚本生成IDA Pro许可证文件idapro.hexlic的完整指南

本文提供了一份详细的Python脚本指南,用于自动化生成IDA Pro的许可证文件idapro.hexlic。文章深入解析了脚本原理,包括构建许可证JSON、RSA密钥修补与签名生成机制,并附有完整的操作流程与常见问题排查,帮助逆向工程人员快速完成本地化许可部署。

weixin_29313547的博客 613

STM32入门教程:无人机控制

我们将会一步一步引导您完成无人机的控制代码,包括无人机的姿态控制、飞行控制和通信控制等。第三步:配置无人机姿态控制 无人机的姿态控制是指控制无人机在空中的倾斜和转向。为了实现姿态控制,我们需要使用加速度计和陀螺仪传感器来获取无人机的姿态信息,并使用PID控制算法来控制无人机的姿态。在这一步骤中,您需要根据您使用的具体传感器和控制算法的要求进行更详细的配置和编码。在通信控制中,您需要考虑到通信的稳定性和可靠性。第五步:通信控制 无人机的通信控制是指与地面站或其他设备进行通信,传输飞行数据和接收飞行指令。

m0_75244442的博客 748

Django显示图片

通常在App的根目录下建两个目录 static用来放网站自己的图片、js、css等 media用来放用户上传的图片、文件等 现在假设有d:/wwwsite/office/static/images/psb.jpg 在urls.py中的urlpatterns中添加: urlpatterns = patterns('', url(r'^static/(?P.*)', 'dja

thy专栏 2万+

【CicadaPlayer】av_rescale_q 学习:转换PTS和Duration

参考 av_rescale_q()理解 大神时间基准的总结: AVPacket下的pts和dts以AVStream->time_base为单位(数值比较大),时间间隔就是AVStream->time_base。 大神:多种转换的总结 av_rescale_q用于计算Packet的PTS 如: if (pkt->pts != AV_NOPTS_VALUE) { pkt->pts = av_rescale_q(pkt->pts, m

突围 842

用Python高效地移动文件

对于同盘移动文件或目录,shutil.move基于复制,远不如os.rename高效。

thy专栏 2万+

simulink的Sine Wave 模块详解

模块是 Simulink 中的一个信号源模块,用于生成正弦波信号。该模块可以根据设定的幅值、频率、相位和偏移量,在仿真过程中产生周期性的正弦波形。模块都能提供强有力的支持。通过深入了解其参数的影响及结合 MATLAB 脚本的应用,读者可以更加有效地利用这一模块进行仿真和研究。此外,通过实际应用场景的扩展以及常见问题解答部分的帮助,能够更好地掌握。模块是一个非常实用的工具,适用于需要生成正弦波信号的各种场景。模块的参数,可以进一步增强学习体验。模块参数的影响,下面我们将详细探讨每个参数如何影响仿真结果。

xiaoheshang_123的博客 1052

Windows11安装配置openclaw+deepseek(大龙虾)

密码可以随便设置(注意wsl系统本质上是linux系统,设置密码系统是不会像windows一样显示*点位符的),输入密码后敲回车再次输入密码,输入后敲回车。如果不小心关闭这个界面,可以再次进入powershell,输入wsl进行系统。在powershell中输入:curl -fssL https://openclaw.ai/install.sh | bash。下面是否通过第3方平台和openclaw交互,我选择j最后一项:skip for now。到下面这一步,可以通过键盘的左箭头选择Yes.

mahailiang的专栏 344

Python中对Tuple之间排序时如何指定第几个元素为关键字排序的问题

因为Core Python Programming上的一个作业7-3要求将一个Dictionary的key和value同时显示,并按key排序。 我做完之后就考虑如果要求按value排序呢?或者说多个Tuple之间排序时如果指定用第几个元素为关键字? google了一下找到了答案,记一下: 解决方案有二: 方法一是采用lambda语法。 Python 支

thy专栏 1万+

【华为OD机试真题】45、 分糖果 | 机试真题+思路参考+代码解析(C++、Java、Py、JS)

### 🎃题目描述 >小明从糖果盒中随意抓一把糖果,每次小明会取出一半的糖果分给同学们。 >  当糖果不能平均分配时,小明可以选择从糖果盒中(假设盒中糖果足够)取出一个糖果或放回一个糖果。 >  小明最少需要多少次(取出、放回和平均分配均记一次),能将手中糖果分至只剩一颗。

正在更新最新华为OD机试2025B卷,提供OJ在线刷题 1290

第一次写完整的Python GUI程序

 夜里用外挂容易被查,因此想让菜熟的时间集中到白天,每次都要口算,麻烦,正好刚刚学了wxPython,一时手痒,来自己写个吧。虽说纯属自娱自乐,但也学到不少东西。现记于下。 1. 关于Python的GUI设计 一直以来都没有一个足够好的Killer IDE,这也怪不得,没有一个足够强大的后台,要想做成重量级的IDE谈何容易(要是Google拉一把就好了,可惜Google出了自己的语

thy专栏 1万+

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

《Python 2.1 宝典》读书笔记

看完了《Core Python 2nd》,入门是肯定了,但离掌握还有不小的距离。抛开那些数不尽的模块不说,单是语言这一块,仍然有不少特性只是了解,仍不能熟练地运用。用Stroustrup的话说:必须用语言的本质特征来编写程序。我仍然有30%左右的地方在用C++的方式在写Python程序。所以在看《Python2.1 宝典》之际,我决定小记一下,起到熟练的作用,做一个Pythoner。 

thy专栏 9668

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

小结两种在Python中导入C语言扩展库的方法

一种是Python文档的推荐方案,采用C API扩展写法:在D:建一个add.c文件,输入//add.c//#include ;static PyObject* add(PyObject *self, PyObject *args); //一定声明为static,把他们限制在这个文件范围里。 几乎所有的参数都是PyObject类型。 在python,每个东西都是

thy专栏 7633

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

python脚本模拟浏览器

(偶尔看到,怕忘了)仿用户打开浏览器然后点击等行为然后获取结果,以下是我使用过的方法只是依赖与ie不过firefox等应该也有相应的调用方法: 思路就是调用ie的com组件然后就是对dom的操作跟用javascript操作dom类似,示范代码如下#天涯登陆地址 tianyalogin = "http://www.tianya.cn/" tianya_user = "xxxxx"

thy专栏 6201

wxPython做GUI:如何在Grid中响应鼠标移动事件

最近写一个小软件,GUI是用wxPython做的,有一个功能需要捕获鼠标在Grid控件上的移动事件。我先在Boa Constructor中拖出一个Grid原型来做测试,发现很容易,只要grid.Bind(wx.EVT_MOTION, self.OnGridMotion)就可以了,但是移植到软件中去之后,死活无法响应,百思不得其解。 不断的尝试之下,总算发现了当Grid还没有创建

thy专栏 5850

在Pydev中使用utf-8的心得小结

PyScripter一直用得挺不错的,直到用上了wxPython,在PyScripter中直接运行wxPython的程序是不行的,因为它们的mainloop有冲突。后来看到了Pydev,抱着试试看的心态来用用。 刚开始用Pydev时,一直还得开一个PyScripter,因为觉得Pydev中没有Interactive Console,后来发现可以打开两个console标签,然后将其中一个变成

thy专栏 5440

Python cPAMIE 模拟IE浏览器

 PAMIE 是一个很有意思的模块。它是一个实现IE自动化的模块。在此之前我使用过ClientCookie这个模块,它可以使用urllib2来通过程序访问页面,并且很适合在需要cookie支持的环境中。不过,有些web的访问过程并不仅仅是下载文件这样的事情,有时是一系统的动作。PAMIE应该是一个更直观,更简单的模拟手工输入的过程。不过,局限就是它只支持IE,在某些特殊情况下还是可以的。使

thy专栏 5292

wxPython中如何让继承使用了PyGridTableBase的grid切换数据

小记以前一个QQ农场偷菜软件 我的展示农作物的表格有点复杂, 数据类继承Grid.PyGridTableBase, 显示类继承Grid.PyGridCellRenderer 问题是当我在运行时要切换表格中的数据时,表格并不随之动态更新。这个问题困扰了我很久,曾经逼得我建了3个表格,切换数据时隐藏另外两个。可这个解决方案实在不漂亮。一次次Google加一次偶然的灵机一动,I hack i

thy专栏 4587

Windows下Python程序打包小结

这还是之前的文章,最近发现了,还是存在网上好找些。 当然现在我的观念有点不一样了,纯Windows下桌面应用,还是Winform为首选,遇到复杂动画时用WPF控件。跨平台桌面应用,可以选择MONO,还可以用Boost C++导入Python程序,这比直接打包Python方便,像GUIMiner应该就是: 记下吧,也会用得上: Windows不像Linux,没有默认安装Python环境

thy专栏 4504

在C#中调用django rest framework需要身份认证的api

最近在项目中需要将设备的数据上传到网站,决定使用webservice

thy专栏 3907

Python的walk和Decorator使用一例

由于经常要查询C++相关的资料,翻书太麻烦,MSDN太大,去网上查询又太慢。于是决定将www.cplusplus.com整个打包成CHM,以便查询用。 将网站down下来之后,发现要做成CHM还是有不少后期工作要做,比如:应该把页面右上方的Login去掉。。。正好学了Python一直没有派上大的用场,咱露它一小手吧。 第一个问题就是遍历目录的问题,网站下面有好几十个目录,以前写C+

thy专栏 3584

本地化部署 DeepSeek,构建单细胞与空间转录组 AI 分析平台

本地化部署 DeepSeek,构建单细胞与空间转录组 AI 分析平台

weixin_53637133的博客 178

AI全栈实战 | 3.9-01 爬虫入门:requests 加 BeautifulSoup 三分钟跑通,但 90% 的人栽在这 4 个“礼貌“问题上

⚠️:本文内容仅用于。请遵守目标站点的服务条款与相关法律法规,不得对目标服务造成负担,不得采集、传播个人隐私数据。技术是中性的,边界在你手里。爬虫的入门技术(requests 发请求 + BeautifulSoup 解析)三分钟就能学会。真正区分"会用爬虫"和"会做爬虫的人"的,是这篇我们跑通"请求→解析→存储"的最小闭环,然后重点把"合规与礼貌"这根弦给你绷上。

源码获取 | 运行部署 | 定制二开修改,如果回复不及时请耐心等待,请见谅。 425
上一篇: More Effective C++ 读书摘要(五、技巧2)Item28 - 29
下一篇: More Effective C++ 读书摘要(五、技巧3)Item30 - 31
thy38
博客等级 码龄19年 184粉丝 116原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值