静态方法,类方法,属性方法

1、全局变量:在模块内,在所有函数、类外面。

2、局部变量:在函数内,在类方法内(未加self修饰的)

3、静态变量:在类内,但不在类方法内。【共同类所有,值改变后,之后所有的实例对象也改变】

4、实例变量:在类方法内,用self修饰的变量。

 

静态方法

# -*- coding: utf-8 -*-

'''
声明静态方法使用注解:@staticmethod
静态方法通过类名进行调用

'''

class Dog(object): def __init__(self,name): self.name = name @staticmethod def eat(self,food): print("%s is eating... %s" %(self.name,food)) d = Dog("wangCai") Dog.eat(d,"baozi")

 

类方法:

# -*- coding: utf-8 -*-

'''
声明类方法使用注解: @classmethod

类方法只能访问类变量,不能访问实例变量
'''

class Dog(object):
    name="xiaoQiang"
    def __init__(self,name):
        self.name = name
        
    @classmethod
    def eat(self,food):
        print("%s is eating... %s" %(self.name,food))
        
        

d = Dog("wangCai")
d.eat("baozi") #如果Dog 类中没有name属性将会报错

 

 

 

属性方法:

# -*- coding: utf-8 -*-

'''
声明属性方法使用注解:  @property

属性方法:把一个方法变成一个静态属性

属性方法不能像属性一样调用del 进行删除
'''

class Dog(object):
    def __init__(self,name):
        self.name = name
        
    @property
    def eat(self):
        print("%s is eating... " %(self.name))
        
   
    @property
    def run(self):
        print("%s is running %s" %(self.name))
    #设置属性方法的参数
    @run.setter
    def run(self,way):
        print("%s is running %s" %(self.name,way))

d = Dog("wangCai")
d.eat #调用属性方法

#调用带参数的属性方法
d.run = "yuanZi"


del d.eat

 

posted on 2017-11-29 16:13  gaizhongfeng  阅读(159)  评论(0编辑  收藏  举报