python学习笔记(三)--类进阶

Python学习笔记14:进阶篇(三)类的终结篇,类的导入和模块的导入。 Python进阶知识,类的导入和模块的导入 阅读详情

 

前言

此文仅为记录学习要点使用

继承

方式:class classname(superClass1,superClass2,...):

 

支持多重继承,但先继承的类方法会重写后继承的方法。换句话说,即后继承的类只会往子类增加变量和方法看,不会修改覆盖(从左往右)

 

 

重写/调用父类方法

1、调用

方式:super(childType,object).parentfunction(param)

 

super函数可以object在childType类型下直接父类,也就是说如果A->B->C->D,那么有实例d,调用A的方法就要super(B,d),通过获取B的直接父类来调用A的方法。覆盖与重写父类方法不会在这里生效

 

 

 

2、重写

通过相同的函数名和参数,重写父类的方法,覆盖隐藏父类的方法。当父类是由子类构造函数生成时,父类方法会被子类方法覆盖隐藏

 

2.1 特殊的方法重写

由于以__(‘_’2个)开头,__(‘_’2个)结尾的为系统基本操作函数,也就是说诸如:A.a,A.a=1等操作都是使用系统基本操作函数进行操作的,所以可以通过对这些系统基本操作函数进行重写,对这些基本操作进行重新定义。但是这样的做法很危险,因为重写这些基本操作函数很容易出问题。

def __getattribute__(self, name)
def __setattr__(self, name, value)

是.取值和=赋值的对应的基本操作函数

通过继承重写或者实现必须的基本操作函数,可以自定义序列类和映射类,并且可以通过这样的做法对类访问和操作进行拦截处理

 

属性操作

可以通过property(fget,fset,fdel,doc)来定义一个属性并定义其基本操作(查改删注)

fget获取的函数

fset设置的函数

fdel删除的函数

doc的属性注释

例子:size=property(getSize,setSize)

x.size<==>x.getSize()

x.size=A<==>x.setSize(A)

 

静态方法与类成员方法

 

静态方法与类成员方法最大的区别,类方法可以通过参数访问调用类成员变量,而静态方法无法访问类成员变量。

1 静态方法

方式:

@staticmethod

def staticfun():

code

通过@staticmethod进行修饰,表静态方法,其中不带self参数

静态方法可以继承,也可以重写

 

 

2 成员方法

 

方式:

@classmethod

def classfun(cls):

code

通过@classmethod进行修饰,表类成员方法,固定参数为cls,为调用该方法的实例类型,可以继承重写。也就是说如果是在父类中定义了类方法,修改子类的一个类变量。那么如果由父类调用的话,会动态在父类结构上新增一个类变量(基本数值类型)或者出现找不到目标(引用类型)。由子类继承成员方法调用才能正确执行。

Python进阶(三)——Python语法 近几年来,随着Google、YouTube、IRobot等大公司对Python语言的广泛使用,Python公司的身影经常出现与我们的视线,Python语言也在软件质量、开发效率、程序的可移植性、标准库的支持等方面成为了一个优秀的程序开发语言,可以完成网站、游戏开发到航空航天控制等领域的各种任务。本栏目希望通过学习《Python学习手册》和网站上的相关指导,从零学习Python,希望对大家有一些帮助 阅读详情

相关推荐

HFSS线圈仿真避坑指南:从建模到寄生参数分析的完整流程

本文详细介绍了HFSS线圈仿真的完整流程,从精准建模到寄生参数优化,特别针对Ansys Electronics Desktop用户提供实用指南。涵盖线圈几何构建、材料属性配置、端口激励设置及寄生电阻与电感分析等关键步骤,帮助工程师避免常见错误,提升仿真精度与效率。

weixin_29209801的博客 549

python快速入门-12-面向对象-隐藏、继承

隐藏数据的作用之一可以防止通过对象直接给实例属性赋值的这种方式产生的出错比如age不应该是-的,通过设置属性为私有属性添加额外对属性操作的方法可以解决。

qq_52940987的博客 277

ADS谐波平衡仿真自动优化报错?三步搞定HB控件设置(附常见错误排查)

本文针对ADS谐波平衡仿真在自动优化中常见的报错问题,提供了三步核心排查法。首先检查并禁用HB控件中可能导致冲突的小信号仿真模式,其次合理化仿真频率与扫描参数设置,最后审视优化变量与目标的定义。通过精准配置HB控件以适配自动优化流程,能有效解决大多数仿真失败问题,确保非线性电路设计顺利进行。

c2d3e4f的博客 791

Python"隐藏"方法

如果是公有方法的条件下,我们想调用Python的方法都可以实例化之后随意调用。 试想,如果我们是这么个情况。做过移动开发的都知道,收费接口很多,比如我们做一个直播类的应用。那么这个接口肯定是按流量收费的。 如果我们比如类是如下情况定义的: class zhibo: #公有方法 def zhibo(self): return start#假如 return ...

MeteoriteMan的博客 6585

C# 实现文件和字符串的AES加密解密

C# 实现文件和字符串的AES128加密解密

m0_72044573的博客 5935

InTouch历史报警与操作记录高效查询控件V4.0实战指南(一键下载即用)

本文详细介绍了InTouch历史报警与操作记录高效查询控件V4.0的实战应用。该控件针对原生AlmDbViewCtrl控件的查询效率低下、功能单一等问题,提供了智能查询、可视化统计、视图定制和一键导出Excel等强大功能,旨在帮助工程师快速处理海量历史数据,大幅提升工控运维效率。

g9h0i1的博客 960

python 删除父类方法_Python开发基础-Day20继承实现原理、子类调用父类的方法、封装...

继承实现原理python中的类可以同时继承多个父类,继承的顺序有两种:深度优先和广度优先。一般来讲,经典类在多继承的情况下会按照深度优先的方式查找,新式类会按照广度优先的方式查找示例解析:没有共同头部父类的类型1 classE:2 deftest(self):3 print('from E')4 #pass5 classF:6 deftest(self):7...

weixin_39810856的博客 549

【深度学习】基于BERT模型的情感分析(附实战完整代码+数据集)

情感分类是一个快速发展的研究领域,尽管众多模型和数据集在二分类任务中显示出很高的准确性,但细粒度的情感分类任务仍然是一个很大改进空间的领域。分析SST-5数据集,Munikar等人的先前工作表明,嵌入工具BERT允许使用简单的模型来实现最新的准确性。

aaaa_hsjsueu的博客 2万+

Python高级

面向对象三大特性 1,封装根据职责将属性和方法封装到一个抽象的类中。定义类的准则 2,继承实现代码的重用,相同的代码不需要重复的编写。设计类的技巧。子类针对自己特有的需求,编写特定的代码 3,多态不同的子类对象调用相同的父类方法,产生不同的执行结果。多态可以增加代码的灵活度。以继承和重写父类方法为前提。是调用方法的技巧,不会影响到类的内部设计 类属性,实例属性总结 如果需要在类外修改类属性,必须通...

weixin_43706545的博客 198

基于STM32设计的智能水产养殖系统(华为云IOT)(152)

当前设计的智能水产养殖系统主控芯片采用STM32F103RCT6,可以实现对水位、水温、水混浊度和PH值等参数的监测和控制,并且支持定时投喂功能。通过连接华为云物联网平台,将传感器数据上传到服务器,并通过Qt设计的Android手机APP来获取设备上传的数据,从而实现对养殖环境的远程监测和控制。

8828

《QGIS快速入门与应用基础》239:指北针样式选择(预设/自定义)

系统解析指北针设计的核心规范与实操方法。文章首先强调行业规范红线,包括强制要求N字标注、箭头辨识度等关键要素,通过正误示例对比强化合规意识。其次详细讲解QGIS内置预设样式的分类应用,提供极简箭头、标准三角箭头等4类样式的选型对照表,并配图说明适用场景。最后介绍从基础微调到SVG导入的进阶自定义方法,帮助用户实现从合规到专业的样式设计。全文贯穿"合规优先、可读为本、美观为辅"原则,配有详细操作截图与规范对照表,适合从GIS新手到专业制图人员参考。

LuckyHanMo的博客 529

python 读excel中的sheet_解决python pandas读取excel中多个不同sheet表格存在的问题

摘要:不同方法读取excel中的多个不同sheet表格性能比较# 方法1def read_excel(path):df=pd.read_excel(path,None)print(df.keys())# for k,v in df.items():# print(k)# print(v)# print(type(v))return df# 方法2def read_excel1(path...

weixin_39860201的博客 591

【华为OD机试真题E卷】474、推荐多样性 | 机试真题+思路参考+代码解析(E卷复用)(C++、Java、Py)

题目描述 >推荐多样性需要从多个列表中选择元素,一次性要返回 N 屏数据(窗口数量),每屏展示 K 个元素(窗口大小),选择策略:   各个列表元素需要做穿插处理,即先从第一个列表中为每屏选择一个元素,再从第二个列表中为每屏选择一个元素,依次类推   每个列表的元素尽量均分为 N 份,如果不够 N 个,也要全部分配完,参考样例图:

KJ.JK 4434

诺,你们要的Python进阶来咯!【函数、类进阶必备】

目录 一、Python进阶初体验——内置函数 1、数据类型相关 2、数值计算相关 3、bool 值判断相关 4、IO 相关 5、元数据相关 6、help()函数 7、sorted()函数 8、range()函数 二、给代码安个家——函数进阶 1、位置参数 2、参数默认值 3、关键字参数 4、任意参数列表 5、多返回值 三、让你函数更好用——类进阶 1、类属性和类方法 (1)类属性的定义 (2)类方法的定义 2、静态方法 3、私有属性、方法 4、特殊方法 5、类的

累计发表博客60余万字,优快云 博客专家、Java 领域优质创作者、华为云享专家、阿里云专家博主。专注分享 Java 优质文章,毕设实战项目开发,全网粉丝10W+ 1万+

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Python语法进阶——类

参考:https://www.bilibili.com/video/BV1wD4y1o7AS?p=112&spm_id_from=pageDriver&vd_source=541ccdf13b275290c43166e1762b6954

m0_63997099的博客 4265

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Python进阶教程第二课——类

在Python中,类(class)是是面向对象编程(OOP)的核心概念之一。类是一个蓝图或模板,用于创建对象(实例)。类定义了对象的属性(数据)和方法(函数),允许你封装数据和行为,实现代码的复用和模块化。通过类,你可以创建多个具有相同属性和方法的对象。

liyibowen2006的博客 1114

Python学习之旅(三) Python进阶

在本章中,我们深入探索了Python的一些高级概念和技术,包括面向对象编程、错误和异常处理、文件操作,以及一些Python的进阶特性。这些知识将为您解决更复杂的问题和构建更健壮的应用程序提供工具和方法。

code_magic的博客 2569

python一般的类有三部分组成_Python学习笔记总结(三)类

一、类简单介绍1、介绍类是Python面向对象程序设计(OOP)的主要工具,类建立使用class语句,通过class定义的对象。类和模块的差异,类是语句,模块是文件.类和实例实例:代表程序领域中具体的元素。类是生产实例的工厂,实例就像带有“数据"的记录,而类是处理这些记录的“程序”.类是实例工程,类的属性提供行为(数据以及函数[方法]),所有从类产生的实例都继承该类的属性。类的一个实例可以通过:实...

weixin_39606396的博客 4208

Python进阶:理解元类创建类ABCMeta

Python进阶:理解抽象基类元类(ABCMeta)一、理解元类(Meta class)1.1 元类直观理解1.2 Python官方文档给出的元类描述二、理解抽象基类(ABC, Abstract Base Classes)2.1 Python官方文档给出的抽象基类概念2.2 抽象基类abc模块源码注释理解三、理解ABCMeta3.1 理解ABCMeta3.2 创建ABCMeta类的过程 一、理解元类(Meta class) 要想理解ABCMeta类,我们需要先理解元类。 1.1 元类直观理解 理解元类:

嵌入式技术与人工智能 1万+

Python进阶之元类

在python面向对象中,我们知道所有的新式类都会继承object类,但是object类又是从何而来呢?是否所有的类在构建之前都会有一个框架呢?pass# 类的实例对象属于 MyClass# 发现类的对象属于 type# 发现int类也属于 type# 发现其父类是 object根据我们已学的知识1和4不难理解,那么这个type又是什么呢?object:object类是所有类(class)的父类,包括type类,并且object没有父类class。

AZURE060606的博客 1069

python进阶例题

python进阶 hello,大家好,我是Dream 上次给大家带来了python基础例题(关注我可以看到哟),这次给大家整理了一些进阶的知识点和例题,希望大家喜欢! 首先和大家分享一个有意思的东西: 当当当当~ 就是这个进度条了,我感觉老有意思了,哈哈哈 这是它的代码,大家可以参考一下: import time from tqdm import tqdm for i in tqdm(range(1000)): time.sleep(.01) python进阶 #用for循环实现把字符串变成.

拥有百余位万粉技术博主、200余位可合作代发博主,私域技术社群规模达千人,商务合作私信 3654

python学习笔记15 python中的类

python类

m0_69045813的博客 1123

[Python学习笔记6]——类

-snip--""" 创建一个继承自汽车类的电动车类 """""" 电动车的特点,初始化父类的属性,再初始化电动车特有的属性 """""" 打印一条描述电瓶容量的消息 """在上面这行代码中,添加了新属性,并设置初始值为70。根据类创建的所有实例都将包含这个属性,但所有Car实例都不包含它。除此之外,还添加了一个方法,它打印有关电瓶的信息。

matlabxiao1的博客 1182

[Python进阶] 类的进阶知识-其它

在Python中,可以使用type()函数来确定一个变量是类还是对象。具体而言,如果变量的类型为,则表示它是一个类;如果变量的类型是该类的实例,则表示它是一个对象。因此,可以看出,Person是一个类,而person是Person类的一个实例对象。

知智 4069

Python学习笔记12:进阶篇(一)类的相关知识

Python学习笔记进阶篇:类的基础知识及使用

weixin_48668564的博客 1127
上一篇: python学习笔记(二)--语法和类基本定义
下一篇: python学习笔记(四)--杂项
赤月幼狼
博客等级 码龄10年 20粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赤月幼狼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值