python练习2

#由于Python是动态语言,根据类创建的实例可以任意绑定属性。
#给实例绑定属性的方法是通过实例变量,或者通过self变量:
#这一点不同于静态语言
class Student(object):
    def __init__(self, name, gender):
        self.name = name
        self.age = 21
        self.__gender = gender


    def get_gender(self):
        return self.__gender


    def set_gender(self,gender):
        if gender not in ['male','female']:
            raise ValueError('bad gender')
        self.__gender=gender


    def get_age(self):
        return self.age


# 测试:
bart = Student('Bart', 'male')
bart.grade = 100
if bart.get_gender() != 'male':
    print('测试失败!')
else:
    bart.set_gender('female')
    if bart.get_gender() != 'female':
        print('测试失败!')
    else:
        print('测试成功!')


L = dir(bart)
cnt = 0
for item in L:
    print(item,end='  ')
    cnt+=1
    if cnt % 3 ==0:
        print('')


print(bart.grade)
#类属性是类所有的,实例属性是类对应实例属性所有的
class Student(object):
    count = 0


    def __init__(self, name):
        self.name = name
        Student.count+=1

# 测试:
if Student.count != 0:
    print('测试失败!')
else:
    bart = Student('Bart')
    if Student.count != 1:
        print('测试失败!')
    else:
        lisa = Student('Bart')
        if Student.count != 2:
            print('测试失败!')
        else:
            print('Students:', Student.count)
            print('测试通过!')

class Screen(object):
    @property
    def width(self):
        return self._width


    @property
    def height(self):
        return self._height


    @width.setter
    def width(self,width):
        self._width = width


    @height.setter
    def height(self,height):
        self._height = height


    @property
    def resolution(self):
        return self._height * self._width


# 测试:
s = Screen()
s.width = 1024
s.height = 768
print('resolution =', s.resolution)
if s.resolution == 786432:
    print('测试通过!')
else:
    print('测试失败!')

原文地址:https://www.cnblogs.com/MalcolmMeng/p/8442962.html