类的私有化及处理

# _*_ coding:utf-8 _*_
# @Time :2020/1/16 22:18
# @Author :dery
# @File :class_private.py
# @Software :PyCharm


# 私有化
# 封装:1.私有化属性部分 2.定义公有的set\get方法
# __属性:就是将属性私有化,访问范围仅限于类中
'''
私有化
1.隐藏属性,不被外界随意修改
2.也可以修改,通过方法完成
def setXXX(self,xxx):
1.筛选赋值的内容
if xxx是否符合条件:
赋值
else:
不赋值
3.如果想获取具体的某一个属性,使用get方法完成
def get(self,xxx):
return self.xxx

'''


class Student:
# __age = 18 # 类属性
def __init__(self, name, age):
self.__name = name
self.__age = age
self.__score = 59

# 定义公有的set/get方法
# set为了赋值、get为了取值

def set_age(self, age):
if 0 < age <= 120:
self.__age = age
else:
print('年龄不在范围内!')

def set_name(self, name):
if len(name) == 6:
self.__name = name
else:
print('名字不是六位!')

def get_age(self):
# self.__age = age
return self.__age

def __str__(self):
return '姓名:{},年龄:{},考试分数:{}'.format(self.__name, self.__age, self.__score)


zhangsan = Student('张三11111111', 90)
# zhangsan.set_name('yupengnihao')
print(zhangsan.get_age())
print(zhangsan)
# print(dir(Student))
# print(dir(zhangsan))

# _*_ coding:utf-8 _*_
# @Time :2020/1/16 23:00
# @Author :dery
# @File :private_handle.py
# @Software :PyCharm


class Student:
# __age = 18 # 类属性
def __init__(self, name, age):
self.name = name
self.__age = age

@property
def age(self):
return self.__age

@age.setter
def age(self, age):
if 0 < age <= 120:
self.__age = age
else:
print('年龄不在范围内!')

# def get_age(self):
# # self.__age = age
# return self.__age

def __str__(self):
return '姓名:{},年龄:{}'.format(self.name, self.__age)


s = Student('zhangsna', 30)

# 私有化赋值
print(s.age)
print(dir(s))

猜你喜欢

转载自www.cnblogs.com/python-beginner/p/12203757.html
今日推荐