码迷,mamicode.com
首页 > 编程语言 > 详细

python基础(7)

时间:2016-09-09 13:33:34      阅读:136      评论:0      收藏:0      [点我收藏+]

标签:

  1. 面向对象高级语法部分
    1. 静态方法、类方法、属性方法
    2. 类的特殊方法
    3. 反射
  2. 异常处理
  3. Socket开发基础

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=Piedel d1.eat #删除的时候调用deleter d1.eat #print(type(d1.eat),type(d1)) #<class ‘NoneType‘>, <class ‘__main__.Dog‘>

python基础(7)

标签:

原文地址:http://www.cnblogs.com/chaishao/p/5856160.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!