python当中关于_单下划线和__双下线的区别

在python当中遇到“_”单下划线和“__”双下线。那么他们之间的区别在哪呢?

  • “_”:单前置下划线,私有化属性和方法,类对象和子类可以访问。
  • “__”: 双前置下划线,私有化属性和方法,外部和子类不可以访问。当然外部其实还是可以访问到的。

详细说明:

  • 1. xx,在类当中,属于公有属性或者方法,类的外部和内部都可以直接访问。
  • 2. _xx,单前置下划线,私有化属性和方法,类对象和子类是可以访问,访问方式需要对象._变量名调用。

  具体如下:

class Person(object):
    def __init__(self,name,age):
        self._name = name
        self._age = age
# 是Person类的子类
class Student(Person): def __init__(self,name,age): super().__init__(name,age) p= Person('bruce',19) # 对象._属性 可以调用 print(p._name) # bruce print(p._age) # 19 # print(p.name) # error stu = Student('小王',27) print(stu._name) # 小王 print(stu._age) # 27 print(stu.name) # error
  • 3. __xx,双前置下划线,无法在外部直接访问,同时无法被子类所继承调用。
class Person(object):
    def __init__(self,name,age):
        self.__name = name
        self.__age = age

class Student(Person):
    def __init__(self,name,age):
        super().__init__(name,age)

p= Person('bruce',19)
# print(p.__name) # error
# print(p._Person.__name) # error

stu = Student("小王",29)
print(stu._Person.__name) #error
print(stu.__name) # error

 

posted on 2022-09-15 19:36  一先生94  阅读(96)  评论(0编辑  收藏  举报

导航