实例属性 -- 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_