乐趣区

关于python:python面向对象子类访问父类的私有属性和私有方法的办法

总结:

1. 子类对象不能在本人的办法外部间接拜访父类的公有属性和公有办法
援用
2. 子类对象能够通过父类的私有办法间接拜访到公有属性和公有办法

  1. 公有属性和办法是对象的隐衷,不对外公开,外界以及子类都不能间接拜访
  2. 公有属性、办法通常用于做一些外部的事件

示例:

后果:

  • B 的对象不能间接拜访__num2 属性
  • B 的对象不能在 demo 办法内拜访__num2 属性
  • B 的对象能够在 demo 办法内调用父类的 test 办法
  • 父类的 test 办法外部可能懊恼歌文__num2 属性和__test 办法

1)代码验证:

在外界不能间接放和煦对象的公有属性、调用对象的公有办法——报错


class A():
    def __init(self):
        self.num1 = 1000
        self.__num2 = 2000

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


class B(A):

    pass


# 创立一个子类对象
b = B()
print(b)

# 在外界不能间接拜访对象的公有属性、调用公有办法(报错)
# print(b.__num2)

# b.__test()

执行后果如下图:

2)代码验证:

子类对象不能在本人的办法外部间接拜访父类的公有属性和公有办法

class A():
    def __init__(self):
        self.num1 = 1000
        self.__num2 = 2000

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


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

        # 2. 在子类的对象办法中,不能调用父类的公有办法
        # b.__test()

        # pass


# 创立一个子类对象
b = B()
print(b)

b.demo()

执行后果如下图:

3)代码验证:

2. 子类对象能够通过父类的私有办法间接拜访到公有属性和公有办法

1. 代码:在外界能够拜访父类的私有属性、调用私有办法

class A():
    def __init__(self):
        self.num1 = 1000
        self.__num2 = 2000

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

    def test(self):
        print("父类的私有办法")

class B(A):
    def demo(self):

         pass


# 创立一个子类对象
b = B()
print(b)

b.demo()

# 在外界拜访父类的私有属性、调用私有办法
print(b.num1)
b.test()

执行后果:

2. 代码:在子类中能够拜访父类的私有属性、调用私有办法


class A():
    def __init__(self):
        self.num1 = 1000
        self.__num2 = 2000

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

    def test(self):
        print("父类的私有办法")

class B(A):
    def demo(self):

        # 1. 拜访父类的私有属性
        print("子类办法 %d" % self.num1)

        # 2. 调用父类的私有办法
        self.test()


# 创立一个子类对象
b = B()
print(b)

b.demo()

执行后果:

3. 代码:子类对象能够通过父类私有办法拜访到父类公有属性和办法,在上述代码中并没有动过子类的任何代码。

小标题

class A():
    def __init__(self):
        self.num1 = 1000
        self.__num2 = 2000

    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.num1)

        # 2. 调用父类的私有办法
        self.test()


# 创立一个子类对象
b = B()
print(b)

b.demo()

执行后果:

其余的 python 教程在python 自学网(www.wakey.com.cn/)还有很多, 也会不断更新,敬请关注!

退出移动版