本节内容:

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()
View Code

  上面的调用会出以下错误,说是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>
View Code

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案