zoukankan      html  css  js  c++  java
  • python中的实例方法、类方法、静态方法的区别

    Python 除了拥有实例方法外,还拥有静态方法和类方法,跟Java相比需要理解这个类方法的含义。

    1. class Foo(object):  
    2.     def test(self)://定义了实例方法  
    3.         print("object")  
    4.     @classmethod  
    5.     def test2(clss)://定义了类方法  
    6.         print("class")  
    7.     @staticmethod  
    8.     def test3()://定义了静态方法  
    9.         print("static")  
    • 实例方法访问方式:
    1. ff.test();//通过实例调用  
    2. Foo.test(ff)//直接通过类的方式调用,但是需要自己传递实例引用  
    • 类方法访问方式:
    1. Foo.test2();  
    如果Foo有了子类并且子类覆盖了这个类方法,最终调用会调用子类的方法并传递的是子类的类对象。
    1. class Foo2(Foo):  
    2.     @classmethod  
    3.     def test2(self):  
    4.         print(self)  
    5.         print("foo2 object")  
    6. f2=Foo2()  
    7. print(f2.test2())  
    输出结果:
    1. <class '__main__.Foo2'>  
    2. foo2 object  
    • 静态方法调用方式:

     静态方法就跟普通的Java静态方式一样

    1. ff=Foo();<pre name="code" class="python">ff.test3();//使用实例调用  
    Foo.test3();//直接静态方式调用
    • 总结

    其实通过以上可以看出:

      实例方法,类方法,静态方法都可以通过实例或者类调用,只不过实例方法通过类调用时需要传递实例的引用(python 3可以传递任意对象,其他版本会报错)。

    三种方法从不同层次上来对方法进行了描述:实例方法针对的是实例,类方法针对的是类,他们都可以继承和重新定义,而静态方法则不能继承,可以认为是全局函数。

  • 相关阅读:
    zbb20181207 springboot @ConfigurationProperties使用
    zbb20181206 logback,lombok 默认日志logback配置解析
    Spring Boot (8) 全局异常处理
    Spring Boot (7) JdbcTemplate访问数据库
    Spring Boot (6) Spring Data JPA
    Spring Boot (4) 静态页面和Thymeleaf模板
    Spring Boot (3) 热部署devtools
    Spring Boot (2) Restful风格接口
    Spring Boot (1) 构建第一个Spring Boot工程
    idea使用maven搭建ssm框架实现登陆商品增删改查
  • 原文地址:https://www.cnblogs.com/ScvQ/p/7054513.html
Copyright © 2011-2022 走看看