本文以廖雪峰的官方网站为参考来学习python的。其学习链接为廖雪峰小白学python教程。
本文是学习到python的访问限制。参考链接廖雪峰python访问限制。
class Student(object):
def __init__(self,name,score):
self.__name= name
self.__score = score
def print_score(self):
print('%s: %s' % (self.__name, self.__score))
bart = Student('Bart Simpson',59)
bart.__name
运行结果为 :
Traceback (most recent call last):
File "**********", line 11, in <module>
bart.__name
AttributeError: 'Student' object has no attribute '__name'
无法访问实例变量。
如果输入代码
bart.print_score()
则会得到结果:
Bart Simpson: 59
class Student(object):
def __init__(self,name,score):
self.__name= name
self.__score = score
def print_score(self):
print('%s: %s' % (self.__name, self.__score))
def get_name(self):
return self.__name
def get_score(self):
return self.__score
bart.print_score()
print(bart.get_name())
print(bart.get_score())
输入上面代码可以得到:
Bart Simpson: 59
Bart Simpson
59
现在可以访问实例变量了。
class Student(object):
def __init__(self,name,score):
self.__name= name
self.__score = score
def print_score(self):
print('%s: %s' % (self.__name, self.__score))
def get_name(self):
return self.__name
def get_score(self):
return self.__score
def set_score(self,score):
if 0 <= score <= 100:
self.__score = score
else:
raise ValueError('bad score')
输入代码:
bart.set_score(99)
bart.print_score()
print(bart.get_score())
可以得到:
Bart Simpson: 99
99
# -*- 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):
self.gender = gender
# 测试:
bart = Student('Bart', 'male')
print(bart.get_gender)
print(bart.get_gender())
print(type(bart.get_gender()))
print(type('male'))
if bart.get_gender() != 'male':
print('测试失败!')
print(bart.get_gender())
else:
bart.set_gender('female')
print(bart.get_gender())
if bart.get_gender() != 'female':
print('测试失败!')
else:
print('测试成功!')
以上为文章结尾测试题目和本人做的答案。
编译结果为
<bound method Student.get_gender of <__main__.Student object at 0x00000000021B1DD8>>
male
<class 'str'>
<class 'str'>
female
测试成功!