Discuss / Python / 为啥我的结果永远都是male

为啥我的结果永远都是male

Topic source

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':
            self.__gender==gender
            print(1,bart.get_gender())
        elif gender=='female':
            self.__gender==gender
            print(2,bart.get_gender())
        else:
            raise ValueError('bad ')

丢脸了,无视我吧

set gender 用isinstance写一个判断即可

小梦哒勒

#4 Created at ... [Delete] [Delete and Lock User]

#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

Reply