Discuss / Python / 练习:请把下面的Student对象的gender字段对外隐藏起来,用get_gender()和set_gender()代替,并检查参数有效性:

练习:请把下面的Student对象的gender字段对外隐藏起来,用get_gender()和set_gender()代替,并检查参数有效性:

Topic source

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

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 'female':

            self.__gender = gender

        else:

            raise ValueError('Error gender')

验证失败,当输入不是 male 或者 female  无法返回错误

而是输入什么就返回什么

Promethues

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

if gender == 'male' or 'female':

这个if判断永远为真。

alienation

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

的确,需要拆成两个判断才可以,为什么?

alienation

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

知道了,是运算符次序问题,必须将真值运算括起来否则就是先判断a == b ,然后or c,因为c永远为真,所以条件永远为真

alienation

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

也不对,加了括号的话则不论内容如何结构都为false,应该直接用列表和in来判断比较好

bool(a == (b or c))这里等式右面为真值,左面为字符串,结果永远为false

而a == b or c则是左边永远为false,右面为true整个永远为true


  • 1

Reply