类定义
python是一门面向对象的语言,面向对象最重要的概念就是类(Class)和实例(Instance), 【牢记】类是抽象出来的模版,实例则是根据模版创造出来的对象
- 类语法 例如:
学生类
class Student(object):
pass
学生实例
stu1 = Student()
绑定属性
- 通过
__init__
方法,在创建实例等时候直接初始化,例如:
class Student(object):
def __init__(self, name, age):
self.name = name
self.age = age
def print_info(self):
print(self.name, self.age)
创建学生实例 绑定属性
stu1 = Student('hd', 21)
- 实例直接绑定
stu.sex = '男'
数据封装
- 面向对象编程的另一个重要特点就是数据封装。在上面的Student类中,每个实例就拥有各自的name和age这些数据,我们可以通过函数来访问这些数据。我们可以通过定义的 print_info 函数来打印学生信息,从外部看来我们只需传入学生信息,而如何打印,都是在Student类的内部定义的,这些数据和逻辑被“封装”起来了,调用很容易,但却不用知道内部实现的细节。封装的另一个好处是我们可以对出入的数据进行操作。
类属性的权限
如果要让内部属性不被外部访问,可以把属性的名称前加上两个下划线__
,在Python中,实例的变量名如果以__开头,就变成了一个私有变量(private),这样就确保了外部代码不能随意修改对象内部的状态,这样通过访问限制的保护,代码更加健壮。例如:
class Student(object):
def __init__(self, name, age):
self.__name = name
self.__age = age
def print_info(self):
print(self.__name, self.__age)
def set_age(self, age):
self.__age = age
def get_age(self):
return self.__age
stu2 = Student('hd', 21)
stu2.print_info()
print(stu2.__age)# 错误 不允许访问
stu2.__age = 22 #这样是创建新的属性 不建议这么干
print(stu2.__age)# 22
#正确方法 通过设置set和get方法来设置私有属性
stu2.set_age(22)
stu2.print_info()
通过set和get方法设置属性操作虽然麻烦,但我们可以对参数做检查,避免传入错误的参数
网友评论