• Python:类属性,实例属性,私有属性与静态方法,类方法,实例方法


    属性分为实例属性与类属性

    方法分为普通方法,类方法,静态方法

    一:属性:

      尽量把需要用户传入的属性作为实例属性,而把同类都一样的属性作为类属性。实例属性在每创造一个实例时都会初始化一遍,不同的实例的实例属性可能不同,不同实例的类属性都相同。从而减少内存。

      1:实例属性:

        最好在__init__(self,...)中初始化

        内部调用时都需要加上self.

        外部调用时用instancename.propertyname

      2:类属性:

        在__init__()外初始化

        在内部用classname.类属性名调用

        外部既可以用classname.类属性名又可以用instancename.类属性名来调用

      3:私有属性:

        1):单下划线_开头:只是告诉别人这是私有属性,外部依然可以访问更改

        2):双下划线__开头:外部不可通过instancename.propertyname来访问或者更改

          实际将其转化为了_classname__propertyname

    二:方法

      1:普通类方法:

        def fun_name(self,...):

          pass

        外部用实例调用

      2:静态方法:@staticmethod            

          不能访问实例属性!!!   参数不能传入self!!!

          与类相关但是不依赖类与实例的方法!!

      3:类方法:@classmethod

          不能访问实例属性!!!   参数必须传入cls!!!

          必须传入cls参数(即代表了此类对象-----区别------self代表实例对象),并且用此来调用类属性:cls.类属性名

      *静态方法与类方法都可以通过类或者实例来调用。其两个的特点都是不能够调用实例属性

      

      e.g1:

    1. class A:  
    2.     member = "this is a test."  
    3.     def __init__(self):  
    4.         pass  
    5.  
    6.     @classmethod  
    7.     def Print1(cls):  
    8.         print "print 1: ", cls.member  
    9.           
    10.     def Print2(self):  
    11.         print "print 2: ", self.member  
    12.             
    13.          
    14.     @classmethod      
    15.     def Print3(paraTest):  
    16.         print "print 3: ", paraTest.member  
    17.     @staticmethod  
    18.     def print4():  
    19.         print "hello"  

    总结:类属性与类方法是类固有的方法与属性,不会因为实例不同而改变,写他们的目的是减少多实例时所创造出来的内存空间,加快运行速度。

       

  • 相关阅读:
    Spring依赖注入的方式、类型、Bean的作用域、自动注入、在Spring配置文件中引入属性文件
    RESTful风格、异常处理、Spring框架
    文件上传、数据校验(后台)、拦截器
    接收的参数为日期类型、controller控制层进行数据保存、进行重定向跳转
    SpringMVC入门Demo
    Mybatis入门Demo(单表的增删改查)
    Spring
    spring的exception
    restful风格
    Java后台验证
  • 原文地址:https://www.cnblogs.com/pengsixiong/p/4823473.html
Copyright © 2020-2023  润新知