本节内容:
1. 面向对象高级语法部分
1.1 静态方法、类方法、属性方法
1.2 类的特殊方法
1.3 反射
2. 异常处理
3. Socket开发基础
1. 面向对象高级语法部分
1.1 静态方法、类方法、属性方法
1) 静态方法
通过@staticmethod装饰器即可把其装饰的方法变为一个静态方法。普通的方法,可以在实例化后直接调用,并且在方法里可以通过self.调用实例变量或类变量,但静态方法是不可以访问实例变量或类变量的,一个不能访问实例变量和类变量的方法,其实相当于跟类本身已经没什么关系了,它与类唯一的关联就是需要通过类名来调用这个方法。
1 class Dog(object):
2
3 def __init__(self, name):
4
5 self.name = name
6
7
8
9 @staticmethod # 把eat方法变为静态方法
10
11 def eat(self):
12
13 print("%s is eating" % self.name)
14
15
16
17
18
19 d = Dog("taidi")
20
21 d.eat()
上面的调用会出以下错误,说是eat需要一个self参数,但调用时却没有传递,没错,当eat变成静态方法后,再通过实例调用时就不会自动把实例本身当作一个参数传给self了。
1 <span style="color: #ff0000;">Traceback (most recent call last): 2 3 File "/Users/jieli/PycharmProjects/python基础/自动化day7面向对象高级/静态方法.py", line 9, in <module> 4 5 d.eat() 6 7 TypeError: eat() missing 1 required positional argument: 'self' 8 9 </span>