python私有方法和私有属性

一步一步来,你会发现——你正在逐渐变成你想要变成的那个模样~

1、私有方法和私有属性:

Python默认的成员函数和成员变量都是公开的,Python 私有属性和方法没有类似别的语言的public,private等关键词来修饰。

在python中定义私有变量只需要在变量名或函数名前加上 两个"_"(下划线),那么这个函数或变量就会为私有的

注意:当使用下划线来声明该方法为私有方法,那么不能在类的外部调用

代码:

# coding=utf-8


class pub(object):
    # 一个普通方法
    def test(self):
        print('这是一个test方法')

    def _test(self):
        print('这是一个_test方法')

    def __test(self):
        print('这是一个__test方法')


pub = pub()
pub.test()
pub._test()
pub.__test()

结果:
在这里插入图片描述
发现’test’ ‘_test’ 这两个方法都可以打印出来 但是唯独’__test’ 这个方法不可以打印

这里我们就可以发现’__test’ 这个方法就是类的私有方法

那我们真的没有办法去使用这个私有方法了吗 ???


2、第一种方法:加前缀

dir函数

描述:
dir() 函数不带参数时,返回当前范围内的变量、方法和定义的类型列表;带参数时,返回参数的属性、方法列表。如果参数包含方法__dir__(),该方法将被调用。如果参数不包含__dir__(),该方法将最大限度地收集参数信息。

dir 语法:

dir([object])

我们可以使用dir函数去看下当前类的属性、方法,返回结果以列表的方式返回

代码:

# coding=utf-8


class pub(object):

    __testc = '这是私有属性__testc'
    # 一个普通方法

    def test(self):
        print('这是一个test方法')

    def _test(self):
        print('这是一个_test方法')

    def __test(self):
        print('这是一个__test方法')


pub = pub()
pub.test()
pub._test()
print(dir(pub))

结果:
在这里插入图片描述
我们发现了 三个刚才定义的相关test的方法 其中两个相同 还有一个还有个前缀’_pub’

所以我们发现 其实所谓的私有方法 其实就是加了前缀 所以我们直接__test 这样是无法调用的 那么我们同样改成_pub__test 试试看

在这里插入图片描述
发现能够调用出私有方法


第二种方法:类中调用

原理:外界无法访问私有方法,但可以在类内部方法私有方法(相当于一个中间人的作用 类似于arp欺骗哈!!!)

代码:

# coding=utf-8


class pub(object):

    # 一个普通方法
    def test(self):
        print('这是一个test方法')
        pub.__test()

    def _test(self):
        print('这是一个_test方法')

    def __test(self):
        print('这是一个__test方法')


pub = pub()
pub.test()

结果:

在这里插入图片描述


虽然自己讲的都是私有方法 但是其实私有属性和私有方法的是类似的哈!!!


总结:

Python中没有像C++中public和private这些关键字来区别公有属性和私有属性

它是以属性命名方式来区分,如果在属性名前面加了2个下划线’__’,则表明该属性是私有属性,否则为公有属性(方法也是一样,方法名前面加了2个下划线的话表示该方法是私有的,否则为公有的)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值