【python】面向对象编程,这么大一个对象你不要嘛?

news2024/11/25 20:32:51

前言

嗨喽,大家好呀~这里是爱看美女的茜茜呐

万物皆是对象,Python当然支持面向对象编程。

类和对象是面向对象编程的两个主要方面,类创建一个新的对象,对象是这个类的实例。

对象可以使用类的变量,属于对象或类的变量被称为域;

对象也可以使用属于类的函数,这样的函数称为类的方法;

域和方法可以合称为类的属性。

域有两种类型

  • 属于实例的

  • 属于类本身

它们分别被称为实例变量和类变量。

类使用关键字class创建,类的域和方法被列在一个缩进块中。

类的方法必须有一个额外的第一个参数,但是在调用时不为这个参数赋值,这个特殊变量指对象本身,按照惯例它的名称是self,类似Java中的this。

在类中下面两个特都方法需要注意:

__init__方法:在类的一个对象被创建时调用该方法;

相当于c++中的构造函数,就是当这个类调用了,那么这个__init__ 方法就要执行。

__del__方法:在类的对象被销毁时调用该方法;

相当于c++中的析构函数。在使用del删除一个对象时也就调用__del__方法,__del__是最后调用的。

Python中所有的类成员(包括数据成员)都是public的,没有Java的私有类,也就是人人都有调用类,虽然编写变成很简单,但是资源人人都可以随意分配访问,在项目中确实一个不好的东西。

但是Python 类的却有私有变量和私有方法之说,这个是一个例外,

如果使用的数据成员以双下划线为前缀,则为私有变量。

你实例化这个类,访问不了。这是很多人忽略 的

比如:

class public():
    _name = 'protected类型的变量'
    __info = '私有类型的变量'
    def _f(self):
        print("这是一个protected类型的方法")
    def __f2(self):
        print('这是一个私有类型的方法')
    def get(self):
        return(self.__info)
pub = public()
# 先打印可以访问的
print(pub._name)
pub._f()
####结果如下####
protected类型的变量
这是一个protected类型的方法


# 打印下类 私有变量和私有方法
print(pub.__info)
报错:'public' object has no attribute '__info'
pub._f2()
报错:pub._f2()

但是私有属性和方法可以在同一个类中被调用

pub.get()
#######
'私有类型的变量'

上面是很多人不知道的,下面,我来声明一个Person类

class Person():
    Count = 0
    def __init__(self, name, age):
        Person.Count += 1
        self.name = name
        self.__age = age
    
p = Person("Runsen", 20)

print(p.Count)

# 1 说明我实例化,这个__init__方法就要执行


print(p.name) #Runsen
print (p.__age) 
#AttributeError: Person instance has no attribute '__age'
#私有变量访问不了,报错

尾语

大家觉得有用的话可以来个免费的点赞+收藏+关注,

防止下次我悄悄更新了好东西你却不知道 !!!

感谢你观看我的文章呐~本次航班到这里就结束啦 🛬

希望本篇文章有对你带来帮助 🎉,有学习到一点知识~

躲起来的星星🍥也在努力发光,你也要努力加油(让我们一起努力叭)。

最后,宣传一下呀~👇👇👇更多源码、资料、素材、解答、交流皆点击下方名片获取呀👇👇👇

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/429488.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MyBatis01 学习遇到的错误

错误1 java.lang.NullPointerException at com.utils.MybatisUtils.getSqlSession(MybatisUtils.java:34) at com.dao.UserDaoTest.test(UserDaoTest.java:14) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.…

进程间通信方式

每个进程的用户地址空间都是独立的,一般而言是不能互相访问的,但内核空间是每个进程都共享的,所以进程之间要通信必须通过内核。 管道 管道传输数据是单向的,如果想相互通信,我们需要创建两个管道才行。 「|」表示的…

前端引入和html标签

先安装 flask模块 pip install flask from flask import Flaskapp Flask(__name__)#创建了网址 /show/info 和函数index的对应关系 #以后用户在浏览器上访问 /show/info,网站自动执行 index app.route("/show/info") def index():return "西安钟楼…

Vivado自带仿真器:真的不好用吗?

Vivado仿真器不好用?如果你还不熟悉它的操作方法,可能会有这种感觉。 实际上,与ModelsIm相比,Vivado仿真器的仿真速度稍慢,但是它的界面美观整洁,操作丰富且流畅,特别适合于调试仿真时间短的工…

JUC高级九-Synchronized与锁升级

1. synchronized 锁优化的背景 用锁能够实现数据的安全性,但是会带来性能下降。无锁能够基于线程并行提升程序性能,但是会带来安全性下降。 为求平衡将synchronized优化为不在是无所和重锁两个状态,新增偏向锁和轻量级锁来平衡安全性和性能问题 synchro…

【一起啃书】《机器学习》第四章决策树

第四章 决策树 4.1 基本流程 决策树是一类常见的机器学习方法,是基于树结构来进行决策的,通过对训练样本的分析来确定划分属性,来模拟人类决策过程。 一般的,一棵决策树包含一个根结点、若干个内部结点和若干个叶结点,…

分页查询工具类

package xyz.huanggy.minio.upload.Util; import java.util.ArrayList; import java.util.List; public class PageBean<T> {/*** 功能&#xff1a;分页工具类*/private int pageSize; // 每页记录数private int pageNo; // 当前页private int totalPages; // 总页数priv…

【Redis】Lua快速入门使用

【Redis】Lua快速入门使用 文章目录【Redis】Lua快速入门使用1. 概述2. 数据类型2.1 变量2.2 循环3. 函数4. 条件控制1. 概述 Lua 是一种轻量小巧的脚本语言&#xff0c;用标准C语言编写并以源代码形式开放&#xff0c; 其设计目的是为了嵌入应用程序中&#xff0c;从而为应用…

vue+Nodejs+Koa搭建前后端系统(二)--koa-generator创建项目及分析

前言 采用上一篇vueNodejsKoa搭建前后端系统&#xff08;一&#xff09;–简易版创建的项目目录的基础上&#xff0c;创建新的后端服务项目server2使用koa-generator脚手架创建后端项目计算机系统为Windows 10 专业版 小说中&#xff0c;终成眷属一般就结局了&#xff0c;但现…

ESP32在ESP-IDF框架下为LVGL(v8.3)配置SD卡文件系统

踩坑记录 1、如果SD卡曾经做过系统盘&#xff08;比如说&#xff1a;作为树莓派的系统盘&#xff09;&#xff0c;那么要把系统盘的分区合并成一个&#xff08;这个网上有很多教程&#xff09;&#xff0c;并重新格式化&#xff0c;否则实验会失败。 2、并不是买回来的新的SD卡…

基于Vant组件库二次封装组件(TS+Vue3.x环境)

1. 今天的需求是封装一个 Navigation Bar 导航栏组件&#xff0c;目的是给到App几乎所有的页面复用&#xff1a; 2. 因为之前的项目里使用过Vant组件库&#xff0c;笔者第一时间想到了Vant组件库中的 NavBar 组件&#xff0c;和当前App的需求匹配度很高。Vant组件库的 NavBar 组…

压箱底教程分享,手把手教会你如何注册target账号和下单

喜欢套利的朋友肯定都认识target这个平台吧&#xff0c;它是美国热门的综合性海淘网站之一。东哥近日收到私信有朋友向我请教在注册target账号时遇到的一些问题&#xff0c;所以今天东哥想跟大家分享的就是就是target账号注册教程和下单流程&#xff0c;让也想注册target账号的…

软考第五章 无线通信网

无线通信网 无线通信网包括面向语音通信的移动电话系统以及面向数据传输的无线局域网和无线广域网。 WiFI底层是如何传输数据的呢 1.移动通信 1.1 蜂窝通信系统 1980年中期&#xff0c;欧洲和日本都建立了第一代蜂窝移动电话系统。蜂窝网络把一个地理区域划分成若干个称为…

Vue2-黑马(五)

目录&#xff1a; &#xff08;1&#xff09;vue2-组件重用 &#xff08;2&#xff09;vue2-element ui安装 &#xff08;3&#xff09;vue2-ElementUI-table &#xff08;4&#xff09;Element-ui-分页pagination &#xff08;1&#xff09;vue2-组件重用 页面上有很多的…

PyTorch中的符号索引和函数索引用法

Pytorch中很多函数都采用的是函数式索引的思路&#xff0c;而且使用函数式索引对代码可读性会有很大提升。 张量的符号索引 张量也是有序序列&#xff0c;我们可以根据每个元素在系统内的顺序位置&#xff0c;来找出特定的元素&#xff0c;也就是索引。 一维张量的索引 一维…

离线安装JumpServer

官网操作手册&#xff1a; https://docs.jumpserver.org/zh/v3/installation/setup_linux_standalone/offline_install/ 环境要求&#xff1a;&#xff08;内存最小需要4G&#xff09; 架构图 安装部署 1、下载 JumpServer官网下载&#xff1a; https://community.fit2cloud…

定点数的二进制表示形式

定点数的二进制表示形式 文章目录定点数的二进制表示形式什么是定点数表示格式数值范围与分辨率转换python 转换定点数C 双精度浮点数转换为8位和16位定点数C 将定点数转回浮点数测试什么是定点数 在嵌入式系统中&#xff0c;为了降低运算复杂度&#xff0c;通常还会使用定点数…

有趣的数学之回文数

“回文”是指正读反读都能读通的句子&#xff0c;它是古今中外都有的一种修辞方式和文字游戏&#xff0c;如“我为人人&#xff0c;人人为我”等&#xff0c;最有名的莫过于“上海自来水来自海上&#xff0c;人过大佛寺佛大过人 ”。你们知道吗&#xff0c;在数学中也有这样一类…

30多份软件测试报告模板,如何写一份优秀测试报告模板流程

相信很多做软件测试的小伙伴在软件测试后期&#xff0c;都为软件测试报告总结花费了很多的精力&#xff0c;那么如何做好软件测试报告呢&#xff1f;一份优秀的测试报告又包含哪些内容呢&#xff1f; 测试报告的核心要素 一、测试结论 从测试工程师的专业角度分析&#xff0…

pytorch进阶学习(四):使用不同分类模型进行数据训练(alexnet、resnet、vgg等)

课程资源&#xff1a;5、帮各位写好了十多个分类模型&#xff0c;直接运行即可【小学生都会的Pytorch】_哔哩哔哩_bilibili 目录 一、项目介绍 1. 数据集准备 2. 运行CreateDataset.py 3. 运行TrainModal.py 4. 如何切换显卡型号 二、代码 1. CreateDataset.py 2.Train…