百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

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”键,以管理员身份运行。在命令行中...

dnf安全模式强制消除小技巧(dnf安全模式在哪里解除)
  • dnf安全模式强制消除小技巧(dnf安全模式在哪里解除)
  • dnf安全模式强制消除小技巧(dnf安全模式在哪里解除)
  • dnf安全模式强制消除小技巧(dnf安全模式在哪里解除)
  • dnf安全模式强制消除小技巧(dnf安全模式在哪里解除)
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特殊指令集,而且使用它能够让大部分的安卓应...

取消回复欢迎 发表评论: