python为什么不设计私有属性呢?

来源:3-2 Python面向对象-定义类的属性

琴代语兮

2017-07-16 00:26

python为什么不设计私有属性呢?

写回答 关注

1回答

  • 精慕门闇黑龙帝
    2017-07-16 17:31:16
    已采纳

    #看你怎么理解这个私有的含义:

    class Person:
        def __init__(self, name, gender):
            self.name = name
            self.gender = gender


    class Student(Person):
        def __init__(self, name, gender, age, snum):
            super(Student, self).__init__(name, gender)
            self.__age = age
            self.studentnumber = snum

    p = Student('Tom', 'Male', 19, 32)

    print(p.gender)
    print(p.__dict__)
    print(p.__age)

    '''

    执行之后:

    Male
    {'name': 'Tom', 'gender': 'Male', '_Student__age': 19, 'studentnumber': 32}
    Traceback (most recent call last):
      File "D:\Program Files (x86)\Python 3.6.1 (64bit)\Python script practices\new_1.py", line 17, in <module>
        print(p.__age)
    AttributeError: 'Student' object has no attribute '__age'

    这里即说明__age这个属性从外部访问来看,是没有的,从p这个属性字典key中__age属性是以_Student__age的形式体现,可以这么理解为__age是属于Student类的私有属性

    当然这个所谓的私有属性,在特殊情况需要修改的时候,也是可以外部访问修改,改变访问语句即可,看个人需要吧

    这是我的个人理解

    '''

Python-面向对象

Python面向对象教程,带你深入了解python面向对象特性

71233 学习 · 81 问题

查看课程

相似问题