标签:
1.1 静态方法,类方法,属性方法
# Author AlleyYu
# 静态方法
#
通过@staticmethod装饰器即可把其装饰的方法变为一个静态方法,什么是静态方法呢?其实不难理解,普通的方法,可以在实例化后直接调用,并且在方法里可以通过self.调用实例变量或类变量,但静态方法是不可以访问实例变量或类变量的,一个不能访问实例变量和类变量的方法,其实相当于跟类本身已经没什么关系了,它与类唯一的关联就是需要通过类名来调用这个方法
# class Dog(object):
# def __init__(self,name,food):
# self.name=name
# self.__food=food
# @ staticmethod
# def eat(self):
# print(‘%s is eating %s‘%(self.name,self.__food))
#
#
# d1=Dog(‘bark‘,‘baozi‘)
# d1.eat(d1)
#类方法 #A is eating pizza 类方法通过@classmethod装饰器实现,类方法和普通方法的区别是, 类方法只能访问类变量,不能访问实例变量
# class Dog(object):
# name=‘A‘
# food=‘pizza‘
# def __init__(self,name,food):
# self.name=name
# self.food=food
# @ classmethod
# def eat(self):
# print(‘%s is eating %s‘%(self.name,self.food))
#
#
# d1=Dog(‘bark‘,‘baozi‘)
# d1.eat()
#属性方法
# class Dog(object):
# def __init__(self,name,food):
# self.name=name
# self.__food=food
# @ property
# def eat(self):
# print(‘%s is eating %s‘%(self.name,self.__food))
# d1=Dog(‘bark‘,‘baozi‘)
# d1.eat
# print(type(d1.eat),type(d1)) #<class ‘NoneType‘>, <class ‘__main__.Dog‘>
#属性方法的传参
class Dog(object):
def __init__(self,name,food):
self.name=name
self.__food=food
@ property
def eat(self):
print(‘%s is eating %s‘%(self.name,self.__food))
@eat.setter
def eat(self, food):
print(‘set value to food‘, food)
self.__food = food
@eat.deleter
def eat(self):
del self.__food
print("del the attibute")
d1=Dog(‘bark‘,‘baozi‘)
d1.eat
d1.eat=‘pizza‘#传递参数时候调用setter
d1.eat=‘Pie‘
del d1.eat #删除的时候调用deleter
d1.eat
#print(type(d1.eat),type(d1)) #<class ‘NoneType‘>, <class ‘__main__.Dog‘>
标签:
原文地址:http://www.cnblogs.com/chaishao/p/5856160.html