zoukankan      html  css  js  c++  java
  • 静态方法@staticmethod 属性方法@property

    多态
    接口重用, 一种接口,多种实现

    静态方法@staticmethod
    只是名义上归类管理, 实际上在静态方法里访问不了类或实例中的任何属性
    类方法@classmethod
    只能访问类变量,不能访问实例变量

    属性方法@property
    把一个方法变成一个静态属性
    给参数赋值要重新定义一个同名函数,并且前面加@属性名.setter

    import os
    # os.system()
    # os.mkdir()

    class Dog(object):
    def __init__(self,name):
    self.name = name

    @staticmethod #实际上跟类没什么关系了
    def eat(self):
    print("%s is eating %s" %(self.name,'dd'))

    def talk(self):
    print("%s is talking"% self.name)
    d = Dog("ChenRonghua")
    d.eat(d)
    d.talk()

    ChenRonghua is eating dd
    ChenRonghua is talking


    import os
    # os.system()
    # os.mkdir()

    class Dog(object):
    '''这个类是描述狗这个对象的'''

    def __init__(self,name):
    self.name = name
    self.__food = None

    #@staticmethod #实际上跟类没什么关系了
    #@classmethod
    @property #attribute
    def eat(self):
    print("%s is eating %s" %(self.name,self.__food))
    @eat.setter
    def eat(self,food):
    print("set to food:",food)
    self.__food = food
    @eat.deleter
    def eat(self):
    del self.__food
    print("删完了")

    def talk(self):
    print("%s is talking"% self.name)

    def __call__(self, *args, **kwargs):
    print("running call",args,kwargs)

    def __str__(self):
    return "<obj:%s>" %self.name

    #print(Dog.__dict__) #打印类里的所有属性,不包括实例属性
    d = Dog("ChenRonghua")
    print(d)
    # print(d.__dict__) #打印所有实例属性,不包括类属性
    # d(1,2,3,name=333)

    #Dog("ChenRonghua")()

     http://www.cnblogs.com/alex3714/articles/5213184.html

  • 相关阅读:
    find命令详解
    wget命令
    国内镜像源
    向linux服务器上传下载文件方式收集
    一些初学shell自己写的一些练习题脚本
    在Linux系统下mail命令的用法
    MAC 下安装 SVN
    天气预报api整理
    pdi vcard-2.1
    Android Studio 问题锦集【持续更新】
  • 原文地址:https://www.cnblogs.com/rongye/p/9965717.html
Copyright © 2011-2022 走看看