美文网首页
python 类定义和属性

python 类定义和属性

作者: 酒深巷子Ya | 来源:发表于2018-05-31 09:00 被阅读77次

类定义

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方法设置属性操作虽然麻烦,但我们可以对参数做检查,避免传入错误的参数

相关文章

网友评论

      本文标题:python 类定义和属性

      本文链接:https://www.haomeiwen.com/subject/uemfsftx.html