Discuss / Python / 隐藏对象的字段,用get和set方法实现访问和改写

隐藏对象的字段,用get和set方法实现访问和改写

Topic source

Ethann

#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 == ('f' or 'F') or gender == ('M' or 'm'):
            self.__gender = gender
        else:
            raise ValueError("Bad value, gender should be 'f/F' or 'm/M'.")

hanli = Student('Hanli', 'm')
print(hanli.get_gender())
hanli.set_gender(1)
print(hanli.get_gender())

输出结果如下:

m
Traceback (most recent call last):
  File "D:\Pystudy\my_project\biba01.py", line 17, in <module>
    hanli.set_gender(1)
  File "D:\Pystudy\my_project\biba01.py", line 13, in set_gender
    raise ValueError("Bad value, gender should be 'f/F' or 'm/M'.")
ValueError: Bad value, gender should be 'f/F' or 'm/M'.

廖雪峰

#2 Created at ... [Delete] [Delete and Lock User]
>>> ('f' or 'F')
'f'

  • 1

Reply