类私有成员和保护成员,学习笔记

 必赢亚州手机网站     |      2019-12-12 02:01

python中的protected和private

python中用

_var ;变量名前一个下划线来定义,此变量为保养成员protected,独有类及其子类能够访问。此变量不能够经过from XXX import xxx 导入

__var;变量名前多少个下划线来定义,此变量为私有private,只允许类自个儿访谈,连子类都不得以访问。

 

class perent_class(object):
    def __init__(self,name,protected,private):
        self.name = name
        self._protected = protected
        self.__private = private

 

Linux and python学习交换1,2群已满.

Linux and python学习沟通3群新开,迎接参与,一齐学习.qq 3群:563227894

不前行,不倒退,甘休的情事是从未的.

同台前行,与君共勉,

 

四星期伍回课(10月7日)

生龙活虎、 类的重写

必赢亚州手机网站,1.1 重写通常方法

class A:
    def hello(self):
        print('Hello,i am A.')
class B(A):
    pass
a = A()
b = B()
a.hello()
b.hello()

结果:

Hello,i am A.
Hello,i am A.

解释:

B类未有概念本人的hello方法,故当hello被调用时,原始新闻就被打字与印刷出来了。

B类也足以重写这些hello方法

class A:
    def hello(self):
        print('Hello,i am A.')
class B(A):
    def hello(self):  
        print('Hello,i am B.')
a = A()
b = B()
a.hello()
b.hello()

结果:

Hello,i am A.
Hello,i am B.

1.2 重写特殊的布局方法

1、调用未绑定的基类布局方法

class Bird:
    def __init__(self):
        self.hungry = True
    def eat(self):
        if self.hungry:
            print('Aaaah...')
            self.hungry = False
        else:
            print('No,thanks!')
class SongBird(Bird):
    def __init__(self):
            Bird.__init__(self)
            self.sound = 'Squawk!'
    def sing(self):
        print(self.sound)
b = SongBird()
b.sing()
b.eat()
b.eat()

结果:

Squawk!
Aaaah...
No,thanks!

2、使用super函数

class Bird():
    def __init__(self):
        self.hungry = True
    def eat(self):
        if self.hungry:
            print('Aaaah...')
            self.hungry = False
        else:
            print('No,thanks!')
class SongBird(Bird):
    def __init__(self):
        super(SongBird,self).__init__()
        self.sound = 'Squawk!'
    def sing(self):
        print(self.sound)
b = SongBird()
b.sing()
b.eat()
b.eat()

结果:

Squawk!
Aaaah...
No,thanks!

解释:

上一篇:Python基础(十) __init__与__new__区别 下一篇:没有了