首页 > 代码库 > python基础(7)
python基础(7)
- 面向对象高级语法部分
- 静态方法、类方法、属性方法
- 类的特殊方法
- 反射
- 异常处理
- 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.eatd1.eat=‘pizza‘#传递参数时候调用setterd1.eat=‘Pie‘ del d1.eat #删除的时候调用deleterd1.eat#print(type(d1.eat),type(d1)) #<class ‘NoneType‘>, <class ‘__main__.Dog‘>
python基础(7)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。