面向对象-->类(一)笔记-----python

一.概念

1.类:拥有一群相同【特征 】或者【行为】的事物的统称

             特征:就是一个变量,在类中又称之为 【属性】

              行为:就是一个函数,在类里又称之为 【方法】

2.对象:由一个【类】 创建出来的,且拥有这一类中定义的属性和方法。

 3.类与对象:

        1)类相当于是一个统一的模板,而对象就是依据这个模板制造(创建出来)的具体的东西。

        2) 一个类可以创建出诸多对象。

        3)对象拥有类的所有属性和方法。

        4)不同的对象,对应的属性值不同。

二.创建

1.定义类名-->确定类的属性和方法
    1)定义类

语法:class 类名(object):#类名要遵守大驼峰命名法,(object)亦可以省略

                   def 方法1(self,参数列表):#这里若是没有参数,也必须要有self,这是默认的,且在第一个

                            pass

                    ........

                   def 方法n(self,参数列表):#方法的定义格式与函数的一样,这里的self(那个对象调用这个方法,这个self就指谁),在后面调用对象的这个方法时就时通过    【self.方法名()】

                             pass

             对象变量名=类名()#创建一个实例化对象,一个对象变量名为一个对象

             对象变量名.方法名()#此后对该对象进行操作,调用类中方法

     2)确定属性,添加属性

语法:class 类名(object):

                  def __init__(self,属性1,属性2,.....): #使用__init__方法来对类的属性初始化,self不可省略,且位于第一个

                               self.变量名=属性 #此后类中的方法调用属性都要写出self.变量,该变量名可自我设置

在创建好一个对象后,可以直接给对象【添加属性】:

语法: 对象名=类名()

           对象名.属性名=属性值   #但是一般不用这种方式

三.类属性

1.概念

          类对象所拥有的属性,类属性可以通过类对象或者实例化对象访问

语法:class 类名(object):

                     变量名A=值    #该处的A就是公有类属性

2.实例属性:

           通过类创建的对象--【实例对象】,【对象属性】又称为【实例属性】

3.相较于实例属性:

         1)实例对象的属性根据对象的不同,其数据也不尽相同。而类属性是保持不变的。

         2)实例属性要求每个对象为其单独开辟一段内存,而类属性是全类共用,仅占一份内存。

4.注意:

         1)尽量避免类属性与实例属性同名,否则,实例对象会优先访问实例属性。

          2)类属性只能通过类对象修改,实例对象无法修改类属性

          3)类属性可私有:

语法:__变量名=值   #此处的__变量名即为私有类属性(此处为两个下划线【_】)

四.类方法:

1.概念:

             第一个形参是类对象的方法

2.操作:

             需要用装饰器@classmethod来标识其为类方法一般以cls作为第一个参数。

语法:

class 类名(object):

        类属性=值  #此处定义类属性

        @classmethod     #类方法必须要使用装饰器来修饰

         def get_变量名(cls):#  cls is  类名  -->为True

                 return cls.类属性名

print(类名.get_变量名())

语法:

class 类名(object):

        类属性=值

        def __init__(self,name):

                   self.name=name

    

使用:1.当方法总需要使用类属性(如访问私有属性等),定义类方法。

           2.类方法一般和类属性配合使用

五.静态方法

1.使用情景:

          在方法中既不需要使用【实例对象】,也不需要使用【类对象】时,定义【静态方法】。

2.优点:

           取消不需要的参数传递,有利于减少不必要的内存占用和性能消耗。

3.概念:

           静态方法既不需要传递类对象,也不需要传递实例对象(形参没有self或者cls)。

            但是静态方法也能通过实例对象和类对象去访问。

4.操作:

语法:          

class 类名(object):

       def __init__(self):

                   name=None   #类中没有属性

       @staticmethod #使用装饰器来进行修饰

        def 方法1(): #静态方法不会自动传递实例对象和类对象

                      pass

        @staticmethod #每定义一个方法,都要有装饰器

         def 方法2():#当方法1和方法2同名时,调用方法会执行最后定义的方法,即最后调用的结果会显示方法2的结果

                      pass

p=类名()

类名.方法名()#用实例对象来调用

p.方法名()#用类对象来调用

语法:【类方法和静态方法叠用】

class 类名(object):

       类属性=值

       def __init__(self,name):

                  self.name=name

#访问类属性

       @classmethod   #类方法

        def 变量名1(cls):

                    print(cls.类属性)

#静态方法打印字符串

        @staticmethod   #静态方法

         def  变量名2():

                     print('字符串')

p=类名("zhangsan")

p.变量名2()

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容