python之类的有关概念,初始化方法,内置方法

1.面向对象

概述:

        面向过程的程序设计把计算机程序视为一系列的命令集合,即一组函数的顺序执行。为了简化程序设计,面向过程把函数继续切分为子函数,即把大块函数通过切割成小块函数来降低系统的复杂度。而面向对象的程序设计把计算机程序视为一组对象的集合,而每个对象都可以接收其他对象发过来的消息,并处理这些消息,计算机程序的执行就是一系列消息在各个对象之间传递。在Python中,所有数据类型都可以视为对象,当然也可以自定义对象。自定义的对象数据类型就是面向对象中的类(Class)的概念。

 

 1.类的设计

在程序开发中,要设计一个类,通常需要满足以下三个需求:

(1).类名:这类事物的名字,满足大驼峰命名法

(2).属性:这类事物具有的特征

(3).方法:这类事物的行为(动作)

 

例1.

小明今年18岁,身高1.75,每天早上也要跑步,会去吃东西

小美今年16岁,身高1.65,每天不跑步,喜欢吃东西

 

Person()    #类名

name        #属性

age

height

run()       #方法

eat()

 

例2.

一只黄色的狗狗叫大黄

看见生人旺旺叫

看见家人摇尾巴

 

Dog()       #类名

name        #属性

color

shout()     #方法

shark()

 

经典类与旧式类:

        经典式类(基类):   带有object  例如:class A(object)

        旧式类(经典类): 没有object  例如:class A()

python之类的有关概念,初始化方法,内置方法

python之类的有关概念,初始化方法,内置方法

 

 2.定义只包含方法的类

语法格式:

class  类名():

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

           pass

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

           pass

       ......

 

 3.创建类对象

语法格式:

  对象变量 = 类名()

 

 

实例:

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

 

代码1:

# 定义猫类

class Cat():

    def eat(self):

        print '小猫爱吃鱼'

    def drink(self):

        print '小猫要喝水'

 

# 创建猫对象

tom = Cat()

tom.eat()

tom.drink()

 

print tom    # 输出的对象变量存储的地址

addr = id(tom)

print '%x' % addr   # %x 打印格式为十六进制

print '%d' % addr   # %d 打印格式为十进制

执行结果:

python之类的有关概念,初始化方法,内置方法

 

代码2:

class Cat():

    def eat(self):

        print '小猫爱吃鱼'

    def drink(self):

        print '小猫要喝水'

 

# 创建猫对象

tom = Cat()

tom.eat()

tom.drink()

print tom          # 输出的对象变量存储的地址

 

#再创建一个猫对象

hellokitty = Cat()

hellokitty.eat()

hellokitty.drink()

print  hellokitty  # 用同一个类创建的两个不同的对象,其存储地址不同

 

# 创建一个与 tom 相同的猫对象

lazy_cat = tom

print lazy_cat     # lazy_cat 与 tom 的储存地址相同

 

执行结果:

python之类的有关概念,初始化方法,内置方法

 

代码3:

# 定义猫类

class Cat():

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

    def eat(self):

        print '%s爱吃鱼' % self.name

    def drink(self):

        print '%s要喝水' % self.name

 

# 创建猫对象

tom = Cat()

 

# 定义猫的属性:名字(此方法并不常用)

tom.name = 'tom'

 

tom.eat()

tom.drink()

print tom  # 输出的对象变量存储的地址

 

执行结果:

python之类的有关概念,初始化方法,内置方法

 

2.初始化方法(定义属性)

当使用类名()创建对象时,python的解释器便会自动执行以下操作:

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

 2.调用初始化方法为对象的属性设置初始值---初始化方法(__init__)

 

初始化方法:

  即为__init__方法,它是面向对象的内置方法,也是专门用来定义一个类具有那些“属性”的方法

 

语法格式:

 1.简单格式(初始值为定值)

def __init__(self):

    self.属性名 = 属性初始值

 2.带有参数(列表)的格式(初始值可自行给定)

def __init__(self,参数1,参数2...):

    self.属性名1 = '名字1'

    self.属性名2 = '名字2'

    .....

 

调用方法 格式:

                          对象变量.方法名()

调用属性 格式:

                          print 对象变量.属性名()

 

代码:

class Cat():

    # 初始化方法定义属性(初始值为定值情形)

    def __init__(self):

        self.name = 'tom'

    #在类中,任何方法都可以使用self.name

    def eat(self):

        print '%s喜欢吃鱼' % self.name

 

tom = Cat()

print tom.name

tom.eat()

 

执行结果:

python之类的有关概念,初始化方法,内置方法

 

3.内置方法

(1) __del__方法

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

当一个对象被从内存中销毁前,会自动调用__del__方法

 

代码:

class Cat():

    def __init__(self,new_name):

        self.name = new_name

        print '%s来了' % self.name

    def __del__(self):

        print '%s走了' % self.name

tom = Cat('tom')

print tom.name

# del tom

print '*' * 50

执行结果:

python之类的有关概念,初始化方法,内置方法

 

(2)__str__方法

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

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

 

代码:

class Cat():

    def __init__(self,name):

        self.name = name

    def __str__(self):

        # 必须返回一个字符串

        return '我是%s' % self.name

tom = Cat('tom')

print tom  # 输出的是__str__里的内容

执行结果:

​​​python之类的有关概念,初始化方法,内置方法