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
  • 相关阅读:
    Mysql 服务无法启动 服务没有报告任何错误
    mysql国内镜像下载网址
    windows上自动设置java环境变量的脚本
    史上最详细的新浪广告系统技术架构优化历程
    十分钟理解广告系统
    Nginx基础配置指令
    nginx配置详情(总结)
    利用tcpdump抓包工具监控TCP连接的三次握手和断开连接的四次挥手
    Windows7配置QT-Android开发环境!
    一位计算机专业硕士毕业生的求职经历和感想[转载]
  • 原文地址:https://www.cnblogs.com/jesse-gong/p/7878331.html
Copyright © 2011-2022 走看看