C++和python的变量对比
off999 2024-12-31 13:44 33 浏览 0 评论
《C++中的this和Python的self对比》基本都是针对函数而言的,从变量的角度看,也有相同之处。
C++中,类中定义的变量一般叫做成员变量,或者说是成员属性,它只属于实例对象,只有实例对象才能用。加上了static关键字才是给类用的 称之为静态变量。
而python不同,实例对象调用属性时,首先是看自身是否已经构建了该属性,如果有就用,如果没有还会去类属性里找, 如果类里有,会直接自动创建一个和类名相同的变量(不会报错,而是自动创建一个同名而没有关系的变量)。初始值和该类属性相同。
#实验例子:
class Stack:
#y = 1
def test(x):
x.y = 10
s = Stack
s.test ##看看该句,屏蔽和不屏蔽有何不同
print('s.y = ',s.y)
#print('Stack.y = ',Stack.y)
#print('Stack.y = ',Stack.y)
print(type(Stack))
print(type(s))
print(id(Stack))
print(id(s))//----------------------------分割线-----------
还有一个问题就是,类属性和实例属性的构建时间。
对于python而言,类属性在类定义之后也构键好了,但是在成员定义之后成员属性并没有构建!这是为什么呢?
原因:
因为python不用声明变量,或者说它的声明、定义、和初始化是一步到位的。而实例属性的定义,只能是显性的通过实例对象来定义(如self.name),
换句话说实例属性的定义只能在类方法中进行。所以如果该函数没有被调用,那么方法中的该实例属性就不会被构建!
所以,如果想在构建实例的时候,就想把实例的属性都构造好,那么就必须把实例的属性的定义放在__init__方法中, 这样,在构建实例的时候,会自动调用__init__方法,这样就能确保实例属性被造。
对于C++而言,类属性在类定义之后就构成好了这和python一样,而成员属性,在成员定义之后成员属性也会构建好(构建的意思就是分配内存空间)
至于,方法内定义的变量都是属于函数的局部变量,也是只有调用函数的时候才会分配空间。还有C++的类定义就只能是定义,成员变量此时是不能初始化的,初始化只能放在构造函数里等待实例被构造的时候初始化。如果不初始化成员变量的值,就会是定义时分配的内存中的值。
还有,C++的类属性,也就是静态属性,他的初始化应该是在定义全局变量的位置,初始化的方法为:int A::s = 0; (A是类名,s是静态属性, 要注意是,此时初始化的过程还必须带上变量类型!访问静态方法也好,访问静态属性也好,都是类名加双冒号实现!)
//----------------------------分割线-----------
总结:不管是C++还是python都大致分为3种变量/属性:(叫法我随便说的,不要在意)
1、类属性(C++中叫静态变量,python中叫类属性)
2、实例属性(C++中叫成员变量,python中叫成员属性)
3、局部变量(C++中叫局部变量,python中叫局部变量)
python编译如何区分这三种变量/属性?
答:
1、声明在类中,且在方法的外部的属性就是类属性。
2、声明在方法内部,且有实例前缀的属性就是实例属性
3、声明在方法内部,且没有实例前缀的属性就是局部变量
C++编译如何区分这三种变量/属性?
答:
1、声明在类中,且在方法的外部的带static关键字的属性是类属性。
2、声明在类中,且在方法的外部的不带static关键字的属性是实例属性。
3、声明在方法内部,就是局部变量
相关推荐
- win10序列号查看(windows10怎么查看序列号)
-
在Windows10操作系统中,可以通过以下方法查看系统序列号:1.通过命令提示符查看:按下“Win+R”组合键打开运行窗口,输入“cmd”后按下“Enter”键,以管理员身份运行。在命令行中...
- redhat iso镜像下载(redhatiso镜像下载)
-
vmwareiso镜像文件可以从VMware官网下载。具体的下载步骤如下:1.打开VMware官网,进入产品下载页面。2.在产品下载页面,选择需要下载的VMware产品,比如VMwareWork...
- 查看windows版本(查看windows版本的方法)
-
在Windows操作系统中,有几种方法可以查看电脑的Windows版本。以下是其中的三种方法:使用“winver”命令:按下“Windows”键和“R”键,打开“运行”对话框,输入“winve...
- 联想笔记本电脑型号排行榜(联想畅销笔记本型号)
-
按照目标消费者的不同,联想建立了个人、中小企业、大企业三类用户的完整商用产品线,包括:针对高端商务个人的ThinkPad笔记本,针对中小企业的V系列、扬天系列,以及针对大客户的昭阳、ThinkCent...
- 无线上网卡哪个牌子好(无线上网卡推荐知乎)
-
关于无线上网卡是否真实的问题,目前存在一些争议。手机无限上网卡是一种破解了运营商发行的特殊资费卡,在国内运营商无限流量上网卡尚未出现之前,被大量出售。使用这些卡可以在一定时间内无限制上网或者廉价拥有大...
- windows7主题桌面(windows7桌面主题包)
-
步骤:1,首先直接选择快捷键win+r,打开运行窗口,在打开窗口以后输入命令为gpedit.msc点击确认,确认后就会打开本地组策略编辑器操作窗口2,在打开的本地组策略编辑器窗口中,这个时候就打开...
- 路由器品牌排名(wifi路由器哪个品牌好)
-
在家用路由器市场中,品牌众多,但一些品牌的产品在性能、稳定性和安全性方面表现更出色。其中,华为、小米、TP-Link、NETGEAR、ASUS、D-Link等品牌的路由器产品备受消费者青睐,它们不仅拥...
- 系统下载失败什么原因(压缩包下载失败是什么原因)
-
出现下载失败的现象,可能是应用版本过旧、应用权限未开通,系统内存不足等原因,请您按照以下方法排查:1重启应用进入手机设置,搜索进入应用管理界面,找到下载失败的应用,点击强行停止即可强制退出该应用。...
- 笔记本怎么连无线网怎么连wifi
-
1.首先需要创建无线网络链接,进入桌面左下角处的Win7开始菜单,点击“控制面板”。2.然后点击“网络和Internet”3.接下来打开“网络和共享中心”,这里是Win7电脑联网所必须用到的功能,不管...
- win7进不了系统怎么解决(电脑win7进不去系统)
-
Win7系统开机一直停留在“Windows正在启动”界面解决方法介绍给大家,很多用户喜欢为自己电脑设置密码,这样可以保护电脑资料安全。但是加密之后用户每次开机速度会变慢,有时候还会出现开机停在“Win...
- 台式机开不了机怎么重装系统
-
可以使用U盘pe中的ghost安装器安装系统。1、双击打开一键ghost恢复工具,选择“还原分区”,映像路径选择win7.gho文件,选择系统要还原的位置,比如C盘,或者根据磁盘容量选择安装位置,点击...
- 组装电脑第一次开机装系统教程
-
1、弹出光驱2、放入光盘3、推入光驱4、打开我的电脑5、双击DVD驱动器打开6、找到setup(一般都是)7、选择要安装的项目安装(如果是打包的话)8、若是新机子则以上全部无效(出厂全是...
- 安卓模拟器电脑版(安卓模拟器电脑版下载)
-
BlueStacks安卓模拟器 是一款十分好用的安卓模拟器。该软件非常的不错,采用了LayerCake技术可使用一些ARM特殊指令集,而且使用它能够让大部分的安卓应...
欢迎 你 发表评论:
- 一周热门
-
-
抖音上好看的小姐姐,Python给你都下载了
-
全网最简单易懂!495页Python漫画教程,高清PDF版免费下载
-
Python 3.14 的 UUIDv6/v7/v8 上新,别再用 uuid4 () 啦!
-
飞牛NAS部署TVGate Docker项目,实现内网一键转发、代理、jx
-
python入门到脱坑 输入与输出—str()函数
-
宝塔面板如何添加免费waf防火墙?(宝塔面板开启https)
-
Python三目运算基础与进阶_python三目运算符判断三个变量
-
(新版)Python 分布式爬虫与 JS 逆向进阶实战吾爱分享
-
失业程序员复习python笔记——条件与循环
-
系统u盘安装(win11系统u盘安装)
-
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)
