Python 类和对象(3)


大家有没有想我呢?
今天讲一下类的一些概念:
公开属性 私有属性 基本方法 私有方法

直接上代码

class Makeup():
    brand = 'MAC'        #公开属性
    __producer = 'US'    #私有属性
    
    def basic(self):       #公开方法
        water = 'pat slightly1'
        essense = 'pat slightly2'
        print('water:%s, essense=%s' % (water,essense))
    
    def __advance(self):   #私有方法
        sunscreen = 'pat slightly3'
        foundation = 'apply a little for times'
        LoosePowder = 'up to you'
        print('sunscreen:%s, essense:%s, LoosePowder:%s' % (sunscreen, foundation, LoosePowder))

什么是公开属性、公开方法,什么是私有属性、私有方法呢?
我们平常用的是公开属性、公开方法,没有双下滑开头。
观察一下上面的代码,私有的属性or方法,都是双下滑线开头。

下面看一下它们在用法上的区别:

gg = Makeup()
print('公开属性 : %s' % gg.brand)
print('公开方法 : %s' % gg.basic)
公开属性 : MAC
公开方法 : <bound method Makeup.basic of <__main__.Makeup object at 0x00000092336DC278>>
print('私有属性 : %s' % gg.__producer)
---------------------------------------------------------------------------

AttributeError                            Traceback (most recent call last)

<ipython-input-4-f097d14a7a25> in <module>()
----> 1 print('私有属性 : %s' % gg.__producer)


AttributeError: 'Makeup' object has no attribute '__producer'
print('私有方法 :%s' % gg.__advance)
---------------------------------------------------------------------------

AttributeError                            Traceback (most recent call last)

<ipython-input-5-becc18ed0559> in <module>()
----> 1 print('私有方法 :%s' % gg.__advance)


AttributeError: 'Makeup' object has no attribute '__advance'

Obviously,在类的外部,是不可以调用私有方法的哦。

下面试试在类的内部调用属性:

class Makeup2():
    def __init__(self, brand, producer):
        self.brand = brand
        self.__producer = producer
    
    def open(self):       #公开方法
        print('公共方法调用公共属性 : %s' % self.brand)        #类的内部调用公共属性
        print('公共方法调用私有属性 : %s' % self.__producer)   #类的内部调用私有属性
        
    def __private(self):   #私有方法
        print('私有方法调用公有属性 : %s' % self.brand)       #类的内部调用公共属性
        print('私有私有属性 : %s' % self.__producer)          #类的内部调用私有属性
gg2 = Makeup2('LANCOME', 'Big BOSS')
gg2.open()
公共方法调用公共属性 : LANCOME
公共方法调用私有属性 : Big BOSS
gg.__private()
---------------------------------------------------------------------------

AttributeError                            Traceback (most recent call last)

<ipython-input-19-5025310145e8> in <module>()
----> 1 gg.__private()


AttributeError: 'Makeup' object has no attribute '__private'

Anyway,私有方法始终是大佬,别想调用她。(好高冷哦!)妹子好难撩哦……

但是公共方法下,公共属性、私有属性都可以调用。嗯,最喜欢跟你这种 Beauty 合作了。

好了,关于对象的介绍暂时写到这里

posted @ 2019-05-23 00:37  喜欢吃面的猪猪  阅读(135)  评论(0编辑  收藏  举报