理解java和python类变量
来源:才华咖 本文已影响1.93W人
来源:才华咖 本文已影响1.93W人
最可怕的不是犯错而是一直都没发现错误,直到现在我才知道自己对类变量的理解有问题。
大概可能也许是因为不常用类变量的原因吧,一直没有发现这个问题。最近在看C++时才知道了类变量到底是什么?
以前我一直觉得类变量和成员变量的`唯一区别是类变量可以通过类名直接访问,是静态的。而成员变量需要实例化一个类后通过实例来访问。
万万没想到忽视了类变量在一个类中只有一个,各个实例中的都是同一个的,在一个实例中修改会影响其他实例中的类变量...(虽然平常也没有因为这个而引起什么bug,但是还是要补上认知的漏洞)。
这里有用java和python写的2个例子:
public class OO{ public static String s; public String m; static{ s = "Ever"; } public static void main(String[] args){ OO o1 = new OO(); OO o2 = new OO(); o1.m = "Once"; //不同实例中的类变量值/地址相同 tln(o1.s); tln(o2.s); tln(Code()); tln(Code()); o1.s = "123"; tln(o2.s);//更改类变量后影响了其他实例 tln(Code()); tln(Code());//NullPointerException //成员变量具有不同的地址 }}
#!/bin/pythonclass B: def whoami(self): print("__class__:%s,self.__class__:%s"%(__class__,self.__class__))class C(B): count = 0 def __init__(self): super(C,self).__init__() = 0 def add(self): __class__t += 1 += 1 def print(self): print("Count_Id:%s,Num_Id:%s"%(id(__class__t),id())) print("Count:%d,Num:%d"%(__class__t,))i1 = C()i2 = C()mi()mi()#i1的成员变量增加了1次,i2的成员变量增加了2次,类变量共增加了3次()()()t()t()
对Java中HashMap和TreeMap的区别的深入理解
java环境变量设置path
Java Tomcat和激活MyEclips的深入理解
Java import以及Java类的搜索路径
java使用ConcurrentHashMap和计数器实现锁的方法
php和javascript之间变量的传递实现代码
java环境变量path设置
JavaScript中push(),join() 函数实例详解
java设置path环境变量
java与javascript之间json格式数据互转详解
中学英语have and eye on,have an eye to,have an eye for这三
whats your plan for dragon boat festival英语作文
Happy Dragon Boat Festival英语作文
JavaScript的变量和数据类型
PHP中--autoload和Smarty冲突的解决方法
初中英语作文My winter vacation plan
英语文化阅读:the only surviving calligraphy
浅析javascript中function 的length属性
英语作文:My favourite Giant pandas
如何检查JavaScript变量的类型
ASandpiperToBringYouJoy英语阅读
My winter vacation plan 英语作文
各类户口办理全面解析
各类和解协议书新版多篇
javascript解析json实例
英语作文My Vacation Plan
PHP+Ajax+lottery.js抽奖
My Plan for the Summer Vacation英语作文
解决PHP中的Cannot modify header information 问题
怎样理解jquery中ajax的dataType属性选项值
python实训总结和体会
The Advantages of Mobile Phone英语作文
大学英语作文On Changing Major Halfway
Javascript中设立对象的ReadOnly属性
Lantern Festival,The 15th day of the 1st lunar month英语作
The Best Thing That Could Ever Happen少儿双语阅读
Think Positive Thoughts Every Day英语作文
JavaScript的变量和数据类型
关于JavaScript中isPrototypeOf函数作用和使用实例
Happy Summer Vacation英语作文应用文