Python面向对象之属性与方法

面向对象之私有属性

在大多数面向对象编程语言中,属性可以设置为公开的或私有的,处于某种原因,我们可以将某些属性设置为是私有的,这样的属性是无法从外部获取的。(通常我们会把类的的方法设置为公开的而属性设置为私有的)此时我们就只需要把属性前面加上两个下划线即可。

比如:name 是公开属性而 __name 就是私有属性了。

但是在实际的开发过程中我们并不建议把属性设置为私有的,因为这样会导致我们的子类无法访问。

比如在我的单链表文章中,我将链表的头属性设置为了私有的 __head 这样就会导致我想构造双链表或环形链表时再使用 Single_link_list 的类时就会报错,大家感兴趣的话可以自己来试一下。

Single_link_list

所以我们大多在实际开发中会遵循一种命名规则就是在属性下面加单下划线 _name ,这代表我的的这个属性是受保护的,但从外界仍然可以访问到,这是一种约定俗成的规则。

举一些例子
class test():
    def __init__(self,name):
        self.name=name

def pname():
    print(test('Wind').name)

if __name__ == '__main__':
    pname()

运行结果:
在这里插入图片描述
’‘

class test():
    def __init__(self,name):
        self.__name=name

def pname():
    print(test('Wind').__name)

if __name__ == '__main__':
    pname()

运行结果:
在这里插入图片描述
’‘

class test():
    def __init__(self,name):
        self._name=name

def pname():
    print(test('Wind')._name)

if __name__ == '__main__':
    pname()

运行结果:
在这里插入图片描述
’‘

面向对象之私有方法

私有方法与私有属性的用法类似,我们就不再赘述,直接举一些例子大家更容易理解。

举一些例子
class test():
    def __init__(self):
        self.name='Wind'
        
    def pname(self):
        print(self.name)

if __name__ == '__main__':
    test().pname()

运行结果:
在这里插入图片描述
’‘

class test():
    def __init__(self):
        self.name='Wind'
        
    def __pname(self):
        print(self.name)

if __name__ == '__main__':
    test().__pname()

运行结果:
在这里插入图片描述
’‘

class test():
    def __init__(self):
        self.name='Wind'
        
    def _pname(self):
        print(self.name)

if __name__ == '__main__':
    test()._pname()

运行结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值