python面向对象编程、内置方法

面向对象编程:

面向对象编程——Object    Oriented    Programming,简称OOP,是一种程序设计思想。OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数。

面向对象编程与面向过程编程:

面向过程的程序设计把计算机程序视为一系列的命令集合,即一组函数的顺序执行。为了简化程序设计,面向过程把函数继续切分为子函数,即把大块函数通过切割成小块函数来降低系统的复杂度。

优点:程序性能高,消耗内存资源小

缺点:可扩展性,可维护性,可复用性低


而面向对象的程序设计把计算机程序视为一组对象的集合,而每个对象都可以接收其他对象发过来的消息,并处理这些消息,计算机程序的执行就是一系列消息在各个对象之间传递。

优点:可扩展性,可维护性,可复用性高,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统 更加灵活、更加易于维护

缺点:程序性能低,消耗内存资源较大

在Python中,所有数据类型都可以视为对象,当然也可以自定义对象。自定义的对象数据类型就是面向对象中的类(Class)的概念。

面向对象

class 类名:

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

当一个类定义完成后,要使用这个类来创建对象,语法格式如下:
对象变量 = 类名()
 

# 小猫爱吃鱼,小猫要喝水

class Cat():
    def eat(self):
        print '小猫爱吃鱼!'
        print '%s love fish!' % self.name
    def drink(self):
        print '小猫要喝水!'
tom = Cat()
tom.name = 'tom'
tom.eat()
tom.drink()

#####################

# %x: 打印格式为十六进制
# %d: 打印格式为十进制

###################################################################################################

python中的常用内置方法:

__new__(cls,[...)
__new__ 是对象实例化时第一个调用的方法,它只取下 cls 参数,
并把其他参数传给 __init__ 。
__new__ 很少使用,但是也有它适合的场景,
尤其是当类继承自一个像元组或者字符串这样不经常改变的类型的时候。

class MusicPlayer(object):
    def __new__(cls, *args, **kwargs):
        print '创建对象,分配空间'
    def __init__(self):
        print '播放器初始化'

player = MusicPlayer()
print player

# __new__  单立

class MusicPlayer(object):
    def __new__(cls, *args, **kwargs):
        print '创建对象,分配空间'
        # 给对象分配空间
        instance = object.__new__(cls)
        # 返回对象的引用
        return instance
    def __init__(self):
        print '播放器初始化'

player = MusicPlayer()
print player

__init__(self,[...])
类的初始化方法。它获取任何传给构造器的参数
(比如我们调用 x = SomeClass(10, ‘foo’) ,
__init__ 就会接到参数 10 和 ‘foo’ 。
__init__ 在Python的类定义中用的最多。

class Cat():
    # 初始化方法,程序在执行时会自动调用
    def __init__(self,new_name):
        print '这是一个初始化方法'
        self.name = new_name
    def eat(self):
        print '%s爱吃鱼' % self.name
tom = Cat('tom')
print tom.name
# 调用eat方法
tom.eat()
lazy_cat = Cat('miomio')
print lazy_cat.name
lazy_cat.eat()

__str__(self)
定义对类的实例调用 str() 时的行为。
str()产生人类可读的输出

如果没有__str__方法,print打印出的将是对象的引用

class Student(object):
    def __init__(self,name):
        self.name = name
gd = Student('guo')
print gd

使用__str__方法,print将会输出人类可读的输出

class Student(object):
    def __init__(self,name):
        self.name = name
    def __str__(self):
        return '我叫%s' % self.name
gd = Student('guo')
print gd

__del__ 是对象的销毁器。
它并非实现了语句 del x (因此该语句不等同于 x.__del__())。
而是定义了当对象被垃圾回收时的行为。
当对象需要在销毁时做一些处理的时候这个方法很有用,比如 socket 对象、文件对象。
但是需要注意的是,当Python解释器退出但对象仍然存活的时候, __del__ 并不会 执行。
所以养成一个手工清理的好习惯是很重要的,比如及时关闭连接。
当所有程序执行完后, __del__会被调用

class Cat(object):
    def __init__(self,name):
        self.name = name
        print '%s 来了' % self.name
    def __del__(self):
        print '%s 走了' % self.name
guo = Cat('guo')

猜你喜欢

转载自blog.csdn.net/gd0306/article/details/81166351