注:个人笔记,仅供参考
环境:python3.8
"""
@fengx
--私有变量
--20200621
"""
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_grade(self):
if self.score >= 90:
return 'A'
elif self.score >= 60:
return 'B'
else:
return 'C'
bart = Student("bart simpe", 59)
lisa = Student('Lisa Simpson', 87)
lisa.age = 14
print(bart.name,bart.score,bart.get_grade())
print(lisa.name,lisa.score,lisa.get_grade())
bart.print_score()
print(bart.print_score)
print(lisa.age)
"""在变量前加__表示私有变量,限制外部访问, """
class Stu (object):
def __init__(self,age,sex):
self.__age = age
self.__sex = sex
def print_age(self):
print('%s:%s'%(self.__age,self.__sex))
""" 新增方法来获取 age 和 sex """
def get_age(self):
return self.__age
def get_sex(self):
return self.__sex
""" 新增方法来修改 age 和 sex """
""" 在方法中设置检查,避免无效参数传入"""
def set_age(self,age):
if 0 <= age <= 100:
self.__age=age
else :
raise ValueError("bad age")
bart = Stu(18,"nv")
may = Stu(20,"nan")
""" 调用方法"""
may.print_age()
may.set_age(33)
may.print_age()
may.set_age(111)
may.print_age()
print(bart.__age)
"""外部代码不能随意修改对象内部状态"""
"""
AttributeError: 'Stu' object has no attribute '__age'
"""