python-14-面向对象

一、面向过程简介

  

  

 

   

 

 二、面向对象的两个核心概念——类和对象

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

    特征被称为属性

    行为被称为方法

  类就相当于一个制造飞机时的图纸,是一个模板,是负责创建对象的

  对象:是由类创建出来的一个具体存在,可以直接使用

  由哪一个类创建出来的对象,就拥有在哪一个类中定义的:属性和方法

  对象 就相当于用图纸制造的飞机

  在程序开发中,应该先有类,再有对象

  类和对象的关系:

    类是模板,对象是根据类这个模板创建出来的,应该先有类,再有对象

    类只有一个,而对象可以有很多个

      不同对象之间属性可能会各不相同

    类中定义了什么属性和方法,对象中就有什么属性和方法,不可能多,也不可能少

三、类的设计

  通常要满足三要素:

  1、类名,满足大驼峰命名法

  2、属性,这类事物具有什么特征

  3、方法,这类事物具有什么行为

 

四、面向对象语法

  1、dir内置函数

    对象几乎是无处不在的,变量、数据、函数等都是对象

    

     

     

 

    内置方法

     

  2、定义简单的类(只包含方法)

    

 

     创建对象:对象变量 = 类名()

    可以在类的外部代码中,直接通过.设置一个属性,但是不推荐使用

    

    如果先调用方法,此时并没有设置name属性,程序就会报错。

    对象包含哪些属性还是要封装到类的内部

  3、方法中的self参数

    哪一个对象调用了方法,self就是哪一个对象

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

    在方法内部

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

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

 1 class Cat:
 2     def eat(self):
 3         print("%s爱吃鱼" % self.name)
 4 
 5     def dink(self):
 6         print("%s爱喝水" % self.name)
 7 
 8 
 9 tom = Cat()
10 tom.name = "Tom"
11 tom.eat()
12 tom.dink()
13 
14 lazy_cat = Cat()
15 lazy_cat.name = "大懒猫"
16 lazy_cat.eat()
17 lazy_cat.dink()

  4、初始化方法

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

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

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

    这个初始化方法就是__init__方法,__init__是对象内置方法

    __init__是专门用来定义一个类具有哪些属性的方法

1 class Cat:
2     def __init__(self):
3         print("初始化")

tom = Cat()

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

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

      2.定义属性之后,再使用 类名() 创建的对象,都会拥有该属性

 1 class Cat:
 2     def __init__(self):
 3         print("初始化")
 4         self.name = 'Tom'
 5 
 6     def eat(self):
 7         print("%s爱吃鱼" % self.name)
 8 
 9     def dink(self):
10         print("%s爱喝水" % self.name)
11 
12 
13 tom = Cat()
14 #tom.name = "Tom"
15 tom.eat()
16 tom.dink()

  

 

 

  5、内置方法和属性

    1.__del__:对象被从内存中销毁前,会被自动调用

      如果希望对象销毁前再做一些事情,可以考虑__del__方法

 1 class Cat:
 2     def __init__(self, new_name):
 3         self.name = new_name
 4         print("%s来了" % new_name)
 5 
 6     def __del__(self):
 7         print("%s去了" % self.name)
 8 
 9 
10 Tom = Cat('Tom')
11 print("-"*50)

 1 class Cat:
 2     def __init__(self, new_name):
 3         self.name = new_name
 4         print("%s来了" % new_name)
 5 
 6     def __del__(self):
 7         print("%s去了" % self.name)
 8 
 9 
10 Tom = Cat('Tom')
11 del Tom
12 print("-"*50)

    生命周期

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

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

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

 

    2.__str__:返回对象的描述信息,print函数输出使用

      在python中,使用print输出对象变量,默认情况下,会输出这个变量 引用的对象 是由哪一个类创建的对象,以及在内存中的地址

      

      如果在开发中,希望使用print输出对象变量 时,能够打印自定义的内容,就可以使用__str__这个内置方法了

        __str__必须返回一个字符串:

 1 class Cat:
 2     def __init__(self, new_name):
 3         self.name = new_name
 4         print("%s来了" % new_name)
 5 
 6     def __del__(self):
 7         print("%s去了" % self.name)
 8 
 9     def __str__(self):
10         return "我是小猫[%s]" % self.name

 
  Tom = Cat('Tom')
  print(Tom)

 

 

 

 

       

      

 

 

    

  

 

  

 

tom = Cat()
posted @ 2020-01-13 10:36  归零19  阅读(174)  评论(0编辑  收藏  举报