- 面向对象高级语法部分
- 静态方法、类方法、属性方法
- 类的特殊方法
- 反射
- 异常处理
- 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=‘Pie‘ del d1.eat #删除的时候调用deleter d1.eat #print(type(d1.eat),type(d1)) #<class ‘NoneType‘>, <class ‘__main__.Dog‘>
时间: 2024-12-18 06:53:18