谈谈Python3的面向对象

关于面向对象,对于学习过Java这门语言的我们来说,可能已经是一个老生常谈的问题了,今天在看到Python面向对象的时候,有了一些新的认识,分享一下~

我们都知道,Python这门语言在设计之初,就已经是一门面向对象的语言了,这点与Java面向对象的思想极为相似,但是既然是两门语言,肯定是有不同的地方,下面我们接着来看!

演示代码-1 

a = 1
print(id(a), type(a))

 测试结果-1

3127235537552 <class 'int'>

这时一段简短的Python代码,对于学过Python的小伙伴们来说,我们都知道,在Python这门语言中,不需要声明数据类型,直接赋值即可!

在Python中,变量是对象的引用,因为变量存储的是对象的地址,变量通过地址引用了对象

所以,我们可以根据上面这句话理解这个代码中,数字 1 是对象,而a是变量,变量a存储对象 1 的地址来达到引用对象的目的!( 当然也可以创建一个类,来理解这些 )

变量位于:栈内存

对象位于:堆内存

对比Java中的面向对象

演示代码-2

public class Obj{
    public static void main(String[] args) {
        int a = 1;
        Integer a2 = 2;
        Integer a3 = new Integer(3); // 装箱

        System.out.println(a);
        System.out.println(a2.getClass());
        System.out.println(a3.getClass());
    }
}

 产生错误,证明 a 不是对象数据类型

 测试结果-2

1
class java.lang.Integer
class java.lang.Integer

Java是双类型系统,包含基本数据类型对象数据类型,所以对于Java来说,上面的演示代码中,a 并不是对象,只是Java中的基本数据类型,只有值,没有id;a2、a3 是对象,是Java中的对象数据类型,有Class。

基本数据类型位于:栈内存

对象数据类型位于:堆内存

由于①和②两部分的代码比较相似,两门编程语言思想又都是面向对象,所以在区分上还是比较容易混淆的。

结论:<1>  ① 中的 1 是对象,a 是变量引用对象(Python) 

           <2>  ② 中的 1 是数值,a 是变量且只有值(Java)

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值