1、类和对象

1.1类

   类是对一群具有相同特征或者行为的事物的一个统称,是抽象的,不能直接使用

            特征被称为属性

           行为被称为方法

1.2对象

    对象是由类创建出来的一个具体存在,可以直接使用,由哪一个类创建出来的对象,就拥有在哪一个类中定义的属性和方法

2、类和对象的关系

  先有类后有对象,类只有一个,而对象可以有很多个,不同的对象之间属性可能会各不相同。类中定义了什么属性和方法,对象中就有什么属性和方法,不可能多或少

3、类的设计

  在使用面向对象开发前,应该首先分析需求,确定程序中需包括哪些类,通常包括三个要素:

         类名:每个单词首字母大写,单词与单词之间没有下划线

        属性:这类事物具有什么样特征

        方法:这类事物具有什么样的行为

 

面向对象基础语法

 01dir内置函数(知道)

     在python中对象几乎是无所不在的,在我们之前学的变量、数据、函数都是对象。在python中可以使用以下两个方法验证:

      1、在标识符/数据后属入一个点.然后按下TAB键,ipython会提示该对象能够调用的方法列表

      2、在内置函数dir传入标识符/数据,可以查看对象内所有的属性和方法。提示--方法名--格式的方法是python提供的内置方法/属性

02定义简单的类

     面向对象是更大的封装,在一个类中封装多个方法,这样通过这个类创建出来的对象,就可以直接调用这些方法了!

2.1定义只包含方法的类

    class 类名:

            def  方法1(self,参数列表):

                   pass

           def  方法2(self,参数列表):             

                   pass

2.2创建对象

当一个类定义完成之后,要使用这个类来创建对象,语法格式如下:

    对象变量=类名()

2.3第一个面向对象程序

   需求:小猫爱吃鱼,小猫要喝水

class  Cat:

      def eat(self):
#哪一个对象调用的方法,self就是哪一个对象的引用 print("%s 爱吃鱼" %self.name)
print("小猫爱吃鱼") def drink(self) print("小猫要喝水") #创建猫对象 tom=Cat() tom.eat() tom.drink()
print(tom)
#再创建一个猫对象
lazy_cat=Cat()
lazy_cat.eat()
lazy_cat.drink()
print(lazy_cat)

引用概念的强调

  在面向对象开发中,引用的概念是同样适用的!

在python中使用类创建对象后,tom变量中仍然记录的是对象在内存中的地址,也就是tom变量引用了新建的猫对象。使用print输出对象变量,默认情况下,是能够输出这个变量引用的对象是由哪个类创建的对象,以及在内存中的地址(十六进制表示)

   提示:在计算机中,通常使用十六进制表示内存地址

       %d可以以10进制输出数字

       %x可以以16进制输出数字

03方法中的self参数

    3.1案例改造---给对象增加属性

       在python中,要给对象设置属性,非常容易,但不推荐使用

              因为:对象属性的封装应该封装在类的内部

       只需要在类的外部的代码中直接通过点.设置一个属性即可

    tom.name="Tom"

   lazy_cat.name="大懒猫"

3.2使用self在方法内部输出每一只猫的名字

   由哪一个对象调用的方法,方法内的self就是哪一个对象的引用

   在类封装的方法内部,self就表示当前调用方法的对象自己

  调用方法时,程序员不需要传递self参数

  在方法内部

         可以通过self.访问对象的属性

        也可以通过self.调用其他的对象方法

 04初始化方法

 4.1之前代码存在的问题---在类的外部给对象增加属性

   提示:在日常开发中,不推荐在类的外部给对象增加属性,如果在运行时,没有找到属性,程序会报错。对象应该包含哪些属性,应该封装在类的内部

4.2初始化方法

   当使用类名()创建对象时,会自动执行以下操作:

   1、为对象在内存中分配空间--创建对象

   2、为对象的属性设置初始值--初始化方法(init)

这个初始化方法就是--init--方法,--init--是对象的内置方法

--init--方法时专门用来定义一个类具有哪些属性的方法!在Cat中增加--init--方法,验证该方法在创建对象时会被自动调用

class Cat:

"""这是一个猫类"""

      def --init--(self):

              print("初始化方法")

#使用类名()创建对象的时候,会自动调用初始化方法--init--

tom = Cat()

4.3在初始化方法内部定义属性

     在--init--方法内部使用self.属性名=属性的初始值就可以定义属性

     在定义属性之后,再使用Cat类创建的对象,都会拥有该属性

class Cat:

      def --init--(self):

              print("这是一个初始化方法")

              #定义用Cat类创建的猫对象都有一个name的属性

              self.name="Tom"

     def eat(self):

          print("%s" 爱吃鱼" % self.name)

#使用类名()创建对象的时候,会自动调用初始化方法--init--

tom=Cat()

tom.eat()

print(tom.name)

4.4改造初始化方法--初始化的同时设置初始值

    在开发中,如果希望在创建对象的同时,就设置对象的属性,可以对--init--方法进行改造

      1、把希望设置的属性值,定义成--init--方法的参数

      2、在方法内部使用self.属性=形参接收外部传递的参数

      3、在创建对象时,使用类名(属性1,属性2....)调用

class Cat:
      def _init_(self,name)
            print("初始化方法 %s" %name)
            self.name=name

tom = Cat("Tom")
lazy_cat =Cat("大懒猫")

05内置方法和属性

_del_ 方法   :对象被从内存中销毁前,会被自动调用

_str_方法: 返回对象的描述信息,print函数输出使用

5.1_del_方法(知道)

    在python中,当使用类名()创建对象时,为对象分配完空间后,自动调用_init_方法

   当一个对象被从内存中销毁前,会自动调用_del_方法.如果希望在对象被销毁前,再做一些事情,可以考虑一下_del_方法

生命周期

    一个对象从调用类名()创建,生命周期开始

  一个对象的_del_方法一旦被调用,生命周期结束

  在对象的生命周期内,可以访问对象属性,或者让对象调用方法

 5.2

 

 

 

 

 

 

 

 

 

posted on 2019-12-01 22:58  2019重新起航  阅读(161)  评论(0编辑  收藏  举报