为啥我的结果永远都是male
Topic source#import -- coding:utf-8 -- class Student(object): def init(self, name, gender): self.name = name#变量名前面加双下划线表示私有变量 不可以直接从尾部访问。 self.gender = gender def get_gender(self): return self.gender #从外部访问私有变量可以通过方法返回。 def set_gender(self,gender):#改变外部变量可以用方法实现 if gender=='male'or gender=='female': self.gender=gender#在类的方法中将传入的参数赋值给私有变量 else : raise ValueError('bad score')
测试:
bart = Student('Bart', 'male') if bart.get_gender() != 'male': print('测试失败!') else: bart.set_gender('female') if bart.get_gender() != 'female': print('测试失败!') else: print('测试成功!') print(bart._Studentname)#若从外部访问私用变量可以用这种方法,因为python解释器把私有变量_name改成了_Studentname.
#print(bart.name)#返回错误 AttributeError: 'Student' object has no attribute 'name' 无法直接访问name时因为真正的私有变量_name改成了_Studentname bart.name='jack' print(bart.name)#s输出结果为jack以上两句看起来改变了私有变量_name,其实这是给bart加了一个名为_name的属性而已。 print(bart._Studentname)#再次从外部访问,发现私有变量name的值依旧为bart
- 1
以后就叫伯约