zoukankan      html  css  js  c++  java
  • 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 合作了。

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

  • 相关阅读:
    个人项目作业
    自我介绍+软工五问
    Word Count
    个人简介+软工五问
    小学生算术题生成器
    个人项目-WC
    个人简历+软工五问
    学习有感
    学习爱我
    软件工程学习记录
  • 原文地址:https://www.cnblogs.com/wyy1480/p/10909487.html
Copyright © 2011-2022 走看看