python创建类的问题
class test():
pass
t=test()
t.a=10
test类没有a属性
为什么使用的时候可以给a属性赋值呢?
class test(): __a=10 def b(self): return self.__as=test()s.__a=20s.b() #为什么b返回的值是10呢?
class test: pass;t = test();t.a = 10; #为t这个对象动态增加一个a属性#=====================================================class test: __a = 10; def b(self): return self.__a;s = test();s.__a = 20;print(s.b());#python有一个模拟私有变量的标识符混淆机制,详见python文档"the python tutorial"9.6一节,#因此第一个__a的实际名字为_test__a,重点是混淆只在类体内发生。#因为s.__a的赋值发生在外面所以不会发生混淆,而函数b在类体内,因此b实际返回的是_test_a,#你可以把所有__a替换成非私有标识符试试,如data#=====================================================class t1(): passclass t2(t1): def p(self): print(self.a);t1.a=10 #为类t1动态增加属性a(类似类变量)x2=t2()x2.p() #t2继承自t1,自然拥有a
[解决办法]
第一个是动态语言的特性,不需要显示声明吧
第二个是类变量和实例变量的区别
[解决办法]
没感觉乱