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

    方法的使用

    静态方法

    - 只是名义上归类管理,实际上在静态方法里访问不了类或实例中的任何属性。

    class Dog(object):
        def __init__(self,name):
            self.name = name
    
        # 静态方法实际上根类没什么关系,单纯变成一个函数。
        @staticmethod
        def eat(self,food):
            print("%s is eating %s" %(self.name,food))

    类方法

    - 只能访问类变量,不能访问实例变量

    class Dog(object):
        n = 333
        def __init__(self,name):
            self.name = name
       @classmethod   #只能访问类变量
        def eat(self,food):
            print("%s is eating %s" %(self.n,food))

    使用场景:只能用写死的类变量。

     

     

    属性方法

    - 把一个方法变成一个静态属性。

    class Dog(object):
        n = 333
        def __init__(self,name):
            self.name = name
        @property #把一个方便变为静态属性
        def eat(self):
            print("%s is eating %s" %(self.name,"dd"))
    d = Dog("ChenRonghua")
    d.eat

    属性方法的用法

    # 创建属性方法: @property
    # 修改属性方法:  @eat.setter
    # 删除属性方法: @eat.deleter
    
    class Dog(object):
        def __init__(self,name):
            self.name = name
            self.__food = None
    
        @property #把一个方便变为静态属性
        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("删完了")
    
    d = Dog("ChenRonghua")  #实例化
    d.eat  #不添加元素,输出
    d.eat = "baozi" #赋值元素,需要两个同名函数
    d.eat   #赋值后输出
    #输出结果
    #ChenRonghua is eating None
    #set to food: baozi
    #ChenRonghua is eating baozi
    #删完了

    使用场景:对用户来讲不需要关心后台的工作,只需要一步实,例名.属性 执行就可以。

  • 相关阅读:
    The 2019 China Collegiate Programming Contest Harbin Site A
    牛客练习赛15
    Wannafly挑战赛13-C
    Wannafly挑战赛13-D
    Subsequence Counting
    Minimize the error
    Educational Codeforces Round 42 (Rated for Div. 2)
    K-th Number
    Wannafly挑战赛13-E
    Minimum spanning tree for each edge
  • 原文地址:https://www.cnblogs.com/xiangsikai/p/7826955.html
Copyright © 2011-2022 走看看