python学习笔记(十一) -- 实例属性和类属性、__init__(构造方法)、MethodType函数 与 java对比分析

实例属性   -- java中的全局变量

实例属性是给一个类的实例绑定一个属性

其中__init__方法对应的就是java中的有参构造函数,其中的第一个参数是固定的,必须为self,只当前实例本身,对应java中的this,在__init__方法中我们可以给实例绑定属性。即java中的有参构造函数对全局变量赋初始值。

我们通过 People(fit) 就可以创建一个实例,通过实例.fit 就可以取到 该实例属性的值。

>>> class People(object):   #定义一个类
	def __init__(self,fit):  #当我们创建对象时会自动调用这个方法,在java中被称为有参构造方法
		self.fit = fit

类属性  -- java中被static 修饰的属性

类属性可以通过类名 . 属性名 直接调用。也可以通过实例 . 属性名 进行调用,但是 java中和 python还是有区别的

首先我们先看一下java

public class B {  //定义一个类


	static String age = "15";   //静态属性,即类属性
	
	String name = "zzh";  //全局属性
}

测试

public class T {

	public static void main(String[] args) {
		
		B b = new B();   //创建一个B类的 实例
		System.out.println(B.age); //类名.属性名 调用
		System.out.println(b.age); //实例名.属性名 调用
		
		//通过实例更改静态属性
		b.age = "99";  //通过实例修改 类属性
		System.out.println(B.age);  //输出结果为 99
		System.out.println(b.age);  //输出结果为 99

		//通过类更改静态属性
		B.age = "66";
		System.out.println(B.age); //输出结果为 66
		System.out.println(b.age); //输出结果为 66		
	}
}

事实证明 java中 可以通过 实例去修改 类属性的值,且 实例 . 属性名 和 类 . 属性名 无论是获取值还是 修改值均操作的是同一个对象。

我们再来看看python

>>> class B(object):
	static_name = "zzh"  #这是一个类属性

	 
>>> b = B()  # 创建一个实例
>>> B.static_
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值