zoukankan      html  css  js  c++  java
  • Python面向对象静态方法,类方法,属性方法

    静态方法(staticmethod名义上归类管理,实际上在静态方法里访问不到类或实例中的静态属性)

     1 class days(object):
     2     def __init__(self, food):
     3         self.food = food
     4 
     5     @staticmethod  # 实际和类没有关系
     6     def tell(self):
     7         print('这里有%s,%s快来' % (self.food, 'name'))
     8 
     9 
    10 a = days('香蕉')
    11 a.tell(a)

    类方法(classmethod只能访问类变量,不能访问实例变量)

     1 lass f2(object):
     2     name = '大哥大大'  # 类变量
     3 
     4     def __init__(self, name):
     5         self.name = name
     6 
     7     @classmethod
     8     def eat(self):
     9         print('这里有%s,【%s】' % (self.name, '类的方法'))
    10 
    11 
    12 f2.eat()

    属性方法(把一个方法变成一个静态属性)

    由属性的定义和调用要注意一下几点:
    1 定义时,在普通方法的基础上添加 @property 装饰器;
    2 定义时,属性仅有一个self参数
    3 调用时,无需括号
    
    属性的定义有两种方式:
    1 装饰器 即:在方法上应用装饰器
    2 静态字段 即:在类中定义值为property对象的静态字段

    经典类,具有一种@property装饰器:

     1 class f3(object):
     2     def __init__(self, name):
     3         self.name = name
     4         self.__food = None
     5 
     6     @property
     7     def eat2(self):
     8         print('这里%s,【%s】' % (self.name, '在干什么'))
     9 
    10 
    11 c = f3('阿猪')
    12 c.eat2

    新式类,具有三种@property装饰器,分别对应了三个被@property、@方法名.setter、@方法名.deleter修饰的方法。

     1 class f4(object):
     2     def __init__(self, name):
     3         self.name = name
     4         self.__food = None
     5 
     6     @property  # 把一个普通方法变为属性方法,获取
     7     def eat(self):
     8         print('这里%s,【%s】' % (self.name, self.__food))  # 由于没有参数self.__food在这没有调用
     9 
    10     @eat.setter  # 修改
    11     def eat(self, food):
    12         print('我要吃%s' % food)
    13         self.__food = food
    14 
    15     @eat.getter  # 删除
    16     def eat(self):
    17         del self.__food
    18         print('删除字段self.__food')
    19 
    20 
    21 d = f4('阿豪')
    22 d.eat
    23 d.eat = '饺子'
    24 del d.eat
    25 d.eat
  • 相关阅读:
    iSCSI又称为IPSAN
    文档类型定义DTD
    HDU 2971 Tower
    HDU 1588 Gauss Fibonacci
    URAL 1005 Stone Pile
    URAL 1003 Parity
    URAL 1002 Phone Numbers
    URAL 1007 Code Words
    HDU 3306 Another kind of Fibonacci
    FZU 1683 纪念SlingShot
  • 原文地址:https://www.cnblogs.com/jesse-gong/p/7878331.html
Copyright © 2011-2022 走看看