39.父类的私有属性和私有方法

  1. 父类的私有属性和私有方法
  2. python 的私有化:

父类的私有属性和私有方法

  1. 子类对象不能在自己的方法内部,直接访问父类的私有属性或私有方法
  2. 子类对象可以通过父类的共有方法间接访问到私有属性或私有方法
    • 私有属性、方法 是对象的隐私,不对外公开,外界以及子类都不能直接访问
    • 私有属性、方法通常用于做一些内部的事情

python 的私有化:

  1. xx :公有变量
  2. _x:单前置下划线,私有化属性或方法,禁止通过form modules import * 导入,但是类和对象可以访问
  3. __xx :双前置下划线,避免与子类中的属性名冲突,无法在外部直接访问(名字重整所以访问不到),类对象和子类不能访问
  4. __xx__:双前后下划线,用户名字空间的魔法对象或属性。例如:init,尽量不要自定义这种形式的。
  5. xx_:单后置下划线,用于避免与Python关键词的冲突

实例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
class A:
def __init__(self):
self.num1 = 100
self.__num2 = 200

def __test(self):
print("私有方法 %d % d" % (self.num1, self.__num2))

def test(self):
print("父类的公有方法%d" % self.__num2)
self.__test()


class B(A):
def demo(self):
# 1.在子类的对象方法中,不能访问父类的私有属性
# print("访问父类的私有属性 %d" % self.__num2)

# 2.不能调用父类的私有方法
# self.__test()

# 3.访问父类的公有属性
print("子类方法 %d " % self.num1)

# 4.调用父类的公有方法
self.test()

# 创建一个子类对象
b = B()
print(b)
b.demo()
#
# 在外界不能直接访问对象的私有属性/调用私有方法
# print(b.__num2)

转载请注明来源,欢迎指出任何有错误或不够清晰的表达。可以邮件至gxnucgb@qq.com

文章标题:39.父类的私有属性和私有方法

文章字数:432

本文作者:陈桂彬

发布时间:2019-08-05, 22:44:44

最后更新:2019-08-11, 22:21:16

原始链接:https://github.com/gxnucgb/gxnucgb.github.io/2019/08/05/39-父类的私有属性和私有方法/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏

github