Python学习笔记(十六):类代码编写细节

蓝桥杯-基础练习-十六进制转八进制(Python)AC代码及注释(内含Pyhton进制转换详解) 青春,热泪盈眶! 内含进制转换的详解,刚上手Python的同学建议读一下. 阅读详情

以Mark Lutz著的《Python学习手册》为教程,每天花1个小时左右时间学习,争取两周完成。 --- 写在前面的话


2013-7-25 15:30 学习笔记

1,把简单的非函数对象赋值给类属性,就会产生数据属性,由所有实例共享。但对实例的属性进行赋值运算只会在该实例内创建或修改变量名。例如:

class FirstClass:
	data = 'mathboy'
	
	def __init__(self, value):
		self.data = value
	
	def display(self):
		print self.data, FirstClass.data
		

x = FirstClass('linlin')
y = FirstClass('mo')
x.display()
y.display()

FirstClass.data = 'mathboylinlin'
x.display()
y.display()

x.data = 'colin'
x.display()
y.display()

输出结果为:

linlin mathboy
mo mathboy
linlin mathboylinlin
mo mathboylinlin
colin mathboylinlin
mo mathboylinlin

2,类方法中的self参数,用于返回调用的主体,即实例对象。方法可以通过类方法或实例方法的形式调用。通过类方法调用时,需要明确传递一个实例给self参数。例如:

class FirstClass:
	def display(self,value):
		print value
		

x = FirstClass()
x.display('linlin')
FirstClass.display(x, 'mathboy')
输出结果为:

linlin
mathboy

3,要明确调用父类的方法时,则必须使用类调用的方法。例如(不一定只是构造方法,其它父类方法也可以):

class FirstClass:
	def __init__(self, value):
		print 'FirstClass: %s' %value
		
class SecondClass(FirstClass):
	def __init__(self, value):
		FirstClass.__init__(self, value)
		print 'SecondClass: %s' %value

x = SecondClass('linlin')
输出结果为:
FirstClass: linlin
SecondClass: linlin

4,抽象类是这样来实现的:

class Super:
	def method(self):
		self.action()
		
class MyClass(Super):
	def action(self):
		print 'hello world'
		
x = MyClass()
x.method()
输出结果为:

hello world

5,__getitem__方法实现重载索引运算。例如:

class MyClass:
	def __getitem__(self, index):
		return index ** 2
		
X = MyClass()
for i in range(5):
	print X[i],
输出结果为:

0 1 4 9 16

6,Python的所有迭代环境都会先尝试__iter__方法,再尝试__getitem__方法。__iter__应返回一个迭代器对象,如果已经提供,Python就会反复调用这个迭代器的next()方法,直到发生StopIteration异常。如果没有找到类的__iter__方法,则会改用__getitem__机制。例如:

class MyClass:
	def __init__(self, start, stop):
		self.value = start - 1
		self.stop = stop
	
	def __iter__(self):
		return self
	
	def next(self):
		if self.value == self.stop:
			raise StopIteration
		self.value += 1
		return self.value ** 2
		
for x in MyClass(1,2):
    for y in MyClass(3,4):
        print x,y
输出结果为:

1 9
1 16
4 9
4 16

7,__getattr__和__setattr__用来重载对属性的引用。例如:

class MyClass1:
	def __getattr__(self, attrname):
		if attrname == 'boy':
			return 'linlin'
		elif attrname == 'girl':
			return 'mo'
		else:
			return ''
	
class MyClass2:
	def __setattr__(self, attr, value):
		if attr == 'boy':
			self.__dict__[attr] = value + 'linlin'
		elif attr == 'girl':
			self.__dict__[attr] = value + 'love'
		else:
			self.__dict__[attr] = value

x = MyClass1()
print x.boy, x.girl

y = MyClass2()
y.boy = 'mathboy'
y.girl = 'mo'
print y.boy, y.girl
输出结果为:

linlin mo
mathboylinlin molove

8,__del__用于重载析构方法。__repr__和__str__用于重载在对类调用repr和str函数时重载返回的字符串。__call__用于重载实例调用。

9,实例和类对象就是Python中带有链接的字典。





【Python学习笔记(十二)】十六进制和有符号十进制数的互相转换 本文旨在探讨十六进制和有符号十进制数之间的互相转换过程,包括它们的基础知识、转换方法和在实际问题中的应用。我们将通过具体的例子和解释,帮助读者更好地理解这两种数值表示方法之间的关系,以及如何在它们之间进行有效的转换。 阅读详情

相关推荐

Python 中十六进制数的按位异或

从上面的代码可以看出,我们创建了一个名为 strxor 的新方法,它有两个名为 a 和 b 的参数,分别对应传递给该函数的两个字符串。该方法的目的是获取两个字符串,对它们进行异或,然后返回结果(也是一个字符串)。XOR 是按位运算符,意思是异或。作为按位逻辑运算符的一部分,XOR 允许更高的精度并需要更少的资源,从而使代码更快、更高效。在上述解决方案中,对原始函数进行了修复,以在检查代码中更改的内容时显示正确的输出,而不是使用。我们使用 int 参数是字符串之一和 16,指的是与十六进制对应的数字的基数。

迹忆客 2385

面向对象(基础到高级)

环境搭建 1.python简介 Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。 Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。 Python 是一种解释型语言: 这意味着开发过程中没有了编译这个环节。类似于PHP和Perl语言。 Python 是交互式语言: 这意味着,您...

weixin_42048451的博客 243

十六进制转图片python脚本

十六进制转换图片的python代码脚本

weixin_39063480的博客 2018

Python基础编程(二十二)——类与对象3

本篇文章主要是对python学习时的一些总结,作为学习笔记记录。 上篇文章主要介绍类中的方法。本篇文章主要是对python中的继承进行简单介绍。 构造方法

止步听风的博客 570

农业杂草检测——棉花杂草数据集

然后将本层13×13的特征图谱经过×2上采样扩充到26×26,并与上层中26×26的特征图谱拼接,得到新的26×26的特征图谱,在该特征尺度上进行第二次预测,此时得到的特征图谱是相对输入图像16倍下采样,具有中尺度感受野,适合检测中等尺度对象;通过目标检测,能够及时清除杂草,减少病虫害的滋生和传播,保障棉花的健康生长,并有助于降低生产成本。对于地膜覆盖的棉田,由于膜内耕作层土温高、底墒好,杂草出苗早而集中,一般覆膜后5 - 7天杂草陆续出土,在墒情好的情况下,15天左右即形成出土高峰。

qq_38220914的博客 1246

VIVADO & VITIS 报错记录

问题详情:使用BD用DMA上传少量数据,根据ILA监测到的AXI总线数据正常,VALID信号和READY信号都正常,但是在PS端的cache缓冲区示数为0,打印为0。可能是因为print和printf混用导致。解决方案:修改缓冲区的对齐参数。

Mulun_Zhu的博客 715

python(类详解)

类 面向对象,面向过程的区别: 面向过程开发,以函数作为基本结构使用: 面向对象的开发,以对象作为基本结构使用 语言中对象结构的特色:高内聚,低耦合。 类的定义 类是一个实物的特征的集合,是抽象的概念。 类和对象的关系 类是多个对象归纳总结而来的,是一种概念,包含所有对象。 由对象总结出类的过程,叫做抽象化 对象是类的具体实现或者实施而来,他是真实的,特指某个事物 由类制作出对象的过程,叫做实例化...

weixin_42970234的博客 652

手把手教你用UNet实现轨道缺陷检测(附RSDDs数据集下载与完整代码)

本文详细介绍了如何使用UNet模型实现轨道缺陷检测,包括RSDDs数据集的下载与处理、UNet架构的改进与优化、训练策略设计以及模型部署的全流程。通过实战案例,展示了如何利用深度学习技术提升工业质检效率,特别适合从事工业缺陷检测和图像处理的开发者参考。

dapp9builder的博客 749

Python 学习之 --- 语法部分(面向对象)

文章目录1. 面向对象概述2. 类和对象3. 构造方法和析构方法4. self 的使用5. 运算符重载6. 封装7. 继承8. 多态9. 类属性和实例属性10. 实例方法(instance method),类方法(class method)与静态方法(static method)10.1 实例方法10.2 类方法10.3 静态方法10.4 实例方法,类方法与静态方法的区别 https://www.cnblogs.com/wangmo/p/7751199.html 1. 面向对象概述   在现实世界中存在

shenyuanhaojie的博客 1017

SDM660电源部分配置:

SDM660电源部分配置: Panel power supplies 1、Reference power supplies Description Name Regulator Voltage (V) Panel power supply 0 vddio PMIC 660/L11 1.8 Panel power supply 1 Lab PMIC 660/lab 4.6 Panel power s...

weixin_41811215的博客 4728

【LangChain编程:从入门到实践】实现多模态代理

【LangChain编程:从入门到实践】实现多模态代理 关键词:LangChain, 多模态代理, 自然语言处理, 机器学习, 知识图谱, 对话系统, 代码生成, AI代理 1. 背景介绍 随着人工智

欢迎来到我的优快云空间!这里聚焦AI大模型应用实战,分享前沿技术、实战案例与开发经验。 581

python继承顺序

class A: def test(self): print('A') class B(A): # def test(self): # print('B') pass class C(A): # def test(self): # print('C') pass class D(B): # ...

今晚打老虎的博客 292

第4章--CANoe library开发 - 诊断功能

因为专栏要做的是汽车ECU自动化测试程序,测试的是ECU的诊断和刷新,因此就需要利用CANoe的接口,开发一些方便使用的诊断报文收发函数。

j187067046的博客 1398

Python学习笔记(二十六)- 类编写基础 Class Coding Basics

1.class如何与模块相关? 答:类总是嵌套在模块中;它们是模块(moudule)对象的属性。类和模块都是命名空间,但类对应于语句(而不是整个文件),并且支持多个实例,继承和运算符重载的OOP概念(模块不支持)。从某种意义上说,模块就像一个单实例类,没有继承,它对应于整个代码文件。 2.如何创建实例和类? 答:通过运行class语句来创建类;通过调用类来创建实例,这个过程就好像它是一个函...

Enderman_xiaohei的博客 501

Android11原生设置屏幕亮由Gamma变化改为线性变化

从Android9 开始屏幕亮度调解变成非线性变化,这样的话就会出现 之前亮度变化很小,到后面时变化亮度很快; 修改为线性变化,只需要修改 ./frameworks/base/packages/SettingsLib/src/com/android/settingslib/display/BrightnessUtils.java /* * Copyright (C) 2018 The Android Open Source Project * * Licensed under the Apache L

Android 4926

基于模糊神经网络实现水质评价预测 - Matlab源码

首先定义输入层、隐含层和输出层的节点数,并初始化权重和阈值,然后开始训练模型,在每轮训练中通过比较模型的输出值与实际值的误差来更新权重和阈值,直到误差达到最小值,为了提高模型的性能,我们可以采用交叉验证等技术进行优化。首先需要准备好数据集,使用的是嘉陵江的水质监测数据集,数据集包含了多个指标,如 pH 值、溶解氧、总氮、总磷等,以及相应的水质等级,我们需要将数据集分为训练集和测试集。在当今环境日益恶化的情况下,水质监测变得越来越重要,模糊神经网络作为一种新型的。

weixin_50547796的博客 147

十六进制字符串转Python代码(utf-8字符串转十六进制字符串)

十六进制字符串转 Python代码 (utf-8字符串转十六进制字符串) 目 录 1、试炼代码 2、十六进制字符串转utf-8代码函数 3、Python代码转十六进制字符串函数 4、试炼完整Python代码 5、代码运行效果 6、十六进制字符串转换值得注意的地方   在QQ“Python学习群”看到一条提问“如何把十六进制代码转换为原始文件呢”?刚好我前面“研究”一行装逼代码学到了一点相关技巧(可以点击蓝色文字查看详情),在此记录个笔记,“抛砖引玉”🤪🤪 QQ提问截屏图片 回页首  .

m0_57158496的博客 3639

温度PID控制PLC程序

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

python二进制转十进制代码_python二进制转十六进制代码

#二进制转化成十六进制print("请输入一个二进制数\n")SUM1=[]SUM2=[]A=0B=0int1=[]#整数部分存放处float1=[]#小数部分存放处a1=int(input("请输入二进制的整数部分"))print("a1=",a1)#整数部分a2=input("请输入二进制的小数部分")print("a2=",a2)for x in a2:float1.append(int(x...

weixin_39801613的博客 2307

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

python十六进制转为二进制_Python进制转换(二进制、十进制和十六进制)

计算机运算会用到四种进制方法:二进制、八进制、十进制、十六进制。四者之间的转换在python是非常简单的,因为python默认自带的函数已经帮我们实现了。具体示例如下:>>> hex(10)'0xa'>>> oct(8)'010'>>> oct(10)'012'>>> bin(10)'0b1010'>>> int('0xa',16)10>>> int('010',8)8>>> int('0b101...

weixin_39837105的博客 7244

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

在Python中以十六进制格式输入数字

Syntax to convert hexadecimal value to an integer (decimal format), 将十六进制值转换为整数(十进制格式)的语法, int(hex_value, 16) Here, 这里, hex_value should contain the valid hexadecimal value hex_value应该包含有效的十...

cumtb2009的博客 1万+

Python 十六进制数与ascii码的转换

有时候我们可能会需要做十六进制数与ascii码的转换,但是上网搜索转换器需要耗费一定时间,有时候还不一定能满足自己的需要可能我们可以去查ascii码表,但是一来,查找耗时间,第二呢,如果我们需要同时查找多个十六进制的对应的ascii码值,总不能一个个查吧。所以,我们可以自己写一个简单的代码,实现多十六进制数与ascii的转换。......

qq_50673174的博客 8646

python 十六进制数转换为十进制数字

Python 十六进制数转换为十进制数字 在计算机科学中,数字系统的使用是非常广泛的。其中,十六进制(Hexadecimal)和十进制(Decimal)是最常见的数制之一。十六进制以16为基数,使用数字0-9和字母A-F来表示,其中A到F分别代表十进制的10到15。而十进制则是我们日常生活中最常用的数字系统,以10为基数。...

weixin_36198509的博客 889

用Python实现十六进制向十进制转换

用Python实现十六进制向十进制转换 0. 引言 最近心血来潮,想通过对比C语言数据结构和Python语言数据结构异同,加深对二者的学习理解。特从最基础的开始复习,首先遇到了指针,以及指针地址的理解。突发奇想,尝试用Python练习下如何将十六进制数转换为十进制数。(作为一只还在纠结指针的菜鸟,此刻内心已经感受到了大牛们关爱制杖的眼神。) 1. C语言中的地址 先看代码: #include &l...

weixin_42644765的博客 1万+

python读取十六进制文件_Python:查看所有十六进制文件

我正在写一个python脚本,它查看常见的计算机文件,并检查它们是否有相似的字节、单词、双字。虽然我需要/想要查看十六进制的文件,但ande似乎无法真正让python用python打开一个简单的文件。我试过了编解码器.打开使用hex作为编码,但是当我操作文件描述符时,它总是会吐出来File "main.py", line 41, in main()File "main.py", line 38, ...

weixin_39633976的博客 1652

python程序编程代码大全,python编写代码的步骤

time 模块大家比较清楚,第一个导入 wraps 函数(装饰器)为确保被装饰的函数名称等属性不发生改变用的,这点现在不清楚也问题不大,实践一下就知道了。大家好,小编来为大家解答以下问题,python语言的代码书写规则有哪些,python语言代码大全及其含义,今天让我们一起来看看吧!大家好,小编来为大家解答以下问题,python代码大全和用法,python代码大全简单,现在让我们一起来看看吧!>>> print("{:0>3d}".format(5))# 整数补零,填充左边, 宽度为3。

2401_82891133的博客 1999

Python学习笔记(十六):关于模块和加载模块

Python学习笔记(十六):关于模块 模块的相关操作Python学习笔记(十六):关于模块一.导入模块importfrom...import二.自定义模块说明文档三.加载模块环境变量默认的模块加载路径四.__all__变量 一.导入模块 import from…import 二.自定义模块 说明文档 三.加载模块 环境变量 默认的模块加载路径 四.__all__变量 ...

YOU 9119
上一篇: Python学习笔记(十五):类基础
下一篇: Python学习笔记(十七):异常-----最后一篇
mathboylinlin
博客等级 码龄18年 101粉丝 26原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值