练习
请把下面的Student
对象的gender
字段对外隐藏起来,用get_gender()
和set_gender()
代替,并检查参数有效性:
# -*- coding: utf-8 -*-
class Student(object):
def __init__(self, name, gender):
self.name = name
self.__gender = gender
def set_gender(self,gender):
if self.__gender in {'male','female'}:
self.__gender = gender
else:
raise ValueError('wrong gender',gender)
def get_gender(self):
return self.__gender
bart = Student('Bart', 'male')
if bart.get_gender() != 'male':
print('测试失败!')
else:
bart.set_gender('female')
if bart.get_gender() != 'female':
print('测试失败!')
else:
print('测试成功!')
raise语法
raise
是 Python 中的一个关键字,用于抛出异常。在代码中,如果遇到一些错误或者异常情况,可以使用 raise
关键字来抛出异常,并在上层代码中处理这些异常。raise
关键字的用法如下:
raise Exception("发生了异常")
上述代码会抛出一个名为“Exception”的异常,并将字符串“发生了异常”作为异常信息。我们也可以使用内置的异常类型来抛出异常,例如:
ValueError
:值错误TypeError
:类型错误NameError
:名称错误
例如,以下代码会抛出一个 TypeError
异常:
x = "abc"
if not isinstance(x, int):
raise TypeError("变量 x 的类型必须是 int")
以上代码中,isinstance
函数用于判断变量 x
是否为整数型,如果不是,则抛出一个 TypeError
异常,异常信息是“变量 x 的类型必须是 int”。