zoukankan      html  css  js  c++  java
  • Python_面向对象_类2

    类的几个装饰器方法:                                                                                                

    @classmethod (类方法):使之无法访问实例变量

    class Animal(object):
        def __init__(self, name):
            self.name = name   # 实例变量
    
        sleep = '睡觉觉后。。'  # 类变量
    
        @classmethod    # 加上此装饰器便不能访问实例变量,但是可以访问类变量
        def eat(self):     
            print('%s 动物要吃东西。。' % self.sleep)
    
    
    A = Animal('狗类')
    Animal.sleep   # 直接访问类变量
    Animal.eat()     # 调用
    A.eat()
    classmethod
    睡觉觉后。。 动物要吃东西。。
    睡觉觉后。。 动物要吃东西。。
    result

    @staticmethod (静态方法):里面就不能有变量了,(和实例就没有关系了),不能访问类变量和实例变量

    静态方法  :  作为一个工具箱,里面访问不了外面,类也访问不到里面的东西,只能通过自己把自己传进去,只是通过类可以找到它

    class Animal(object):
        def __init__(self, name):
            self.name = name   # 实例变量
    
        sleep = '睡觉觉后。。'  # 类变量
    
        @staticmethod   # 静态方法
        def drink():   # 此处加入self将没有任何意义
            print('%s 动物要喝水水。。')    # 不能‘访问’实例变量以及类变量
    
        @staticmethod   # 静态方法
        def drink1(self):  
            print('%s 动物要喝水水。。' % self.name)    # 可以传入值
    
    A = Animal('狗类')
    A.drink()
    A.drink1(A)    # 值的传入
    staticmethod
    %s 动物要喝水水。。
    狗类 动物要喝水水。。
    result

    @property (属性):把类中方法变成了一个属性,不能给里面传值,也不能删除里面的值

    class Animal(object):
        def __init__(self, name):
            self.name = name
            self.num = None
    
        @property     # 变成了一个属性
        def eat(self):
            print('%s 动物要吃饭饭。。' % self.name)
    
        @property
        def vel(self):
            return self.num
    
        @vel.setter
        def vel(self, num):
            self.num = num        # 通过.setterf给里面赋值
            print('改过的值:', self.num)
    
        @vel.deleter         # 通过.deleter从里面删除东西
        def vel(self):
            print('---------')
            del self.num  # 通过这个才能彻底从里面删除变量
         #   print(self.num)
    
    A = Animal('狗类')
    A.eat    # 以访问属性的方式,访问eat
    print(A.vel)
    A.vel = 3
    del A.vel    # 删除调用
    property
    狗类 动物要吃饭饭。。
    None
    改过的值: 3
    ---------
    result

     私有属性:__名字:直接调用不行但是可以通过_类名__名字 可以访问 

    类的部分特殊成员:                                                                                                    

    1.__doc__:输出类的描述信息

    2.__module__:当前操作的对象在那个模块

    3.__class__:当前操作的对象的类是什么

    4.__init__:构造方法,通过类创建对象时(一实例化后),自动触发执行

    5.__del__:析构方法,当对象在内存中被释放时, 自动触发执行,在所有程序都执行完,自动触发执行

    6.__call__:实例化后,对象后面加括号,触发执行此方法

    7.__dict__:以字典的形式返回类里的成员变量

    8.__str__:如果一个类中定义了此方法,那么在打印对象时,默认输出该方法的返回值

    9.__iter__:用于迭代器,之所以列表、字典、元组可以进行for循环,,是因为类型内部定义了此方法

    10.__new__:构造了类,如果重写了这个方法,就不会自动触发调用__init__方法了

    class Animal(object):
        '''我是一朵小花花,啦啦啦。。'''
        def __init__(self, speak):
            self.speak = speak
            print('%s yes >_< ' % self.speak)
            self.n = 5
    
        def __str__(self):
            return '小花花长大大。。'
    A = Animal('oh!')
    print(A.__doc__)        # 类中的描述信息
    print(A.__dict__)        # 打印类里的实例变量
    print(A)          # 自动触发的__str__
    部分实现
    oh! yes >_< 
    我是一朵小花花,啦啦啦。。
    {'speak': 'oh!', 'n': 5}
    小花花长大大。。
    result

    具体参照:http://www.cnblogs.com/wupeiqi/p/4766801.html

  • 相关阅读:
    ABAP学习(10):ALV显示之function alv
    ABAP学习(11):ALV显示之OO ALV使用示例
    ABAP学习(3):屏幕显示
    ABAP学习(6):ABAP GUI和开发工具
    ABAP学习(9):时间日期操作
    ABAP学习(8):操作EXCEL
    ABAP学习(2):控制语句
    ABAP学习(5):数据库语句
    ABAP学习(4):内表
    编程经验:高性能.NET WEB开发(1)http压缩
  • 原文地址:https://www.cnblogs.com/Vera-y/p/9852897.html
Copyright © 2011-2022 走看看