美文网首页
Python3面向对象-类和对象

Python3面向对象-类和对象

作者: test小星星 | 来源:发表于2018-09-19 11:58 被阅读79次

当创建一个对象时,就是用一个模子,来创造一个实物。模子称为类,实物称为对象。

类的构成

类由三个部分构成
1、类的名称:类名(类名的第一个字母大写)
2、类的属性:一组数据/变量
3、类的方法:要实现的功能(行为)

示例
class 类名():
    #属性
    a = xx
    #方法
    def 方法名(self):
        pass

# 类的实例化/对象
t = 类名()
# 使用类里面的方法
t.方法名()
# 往类里面添加属性
t.name = "张三" 

和普通的函数相比,在类中定义的方法只有一点不同,就是第一个参数永远是实例变量self,并且,调用时,不用传递该参数。除此之外,类的方法和普通函数没有什么区别,所以,你仍然可以用默认参数、可变参数、关键字参数和命名关键字参数。

__init__(self)方法

数据的初始化,不需要调用,当创建了一个对象时既自动调用了该方法。
__init__()里面的属性值可以进行累加,不会随着调用方法的结束而初始化
如连续调用方法,可以存储上一次调用的结果,再调用时该属性是上一次调用结果的值。
__init__(self)中的self参数,不需要传递,python解释器会自动把当前的对象引用传递进去。

示例
class Student(object):

    def __init__(self, name, score):
        self.name = name
        self.score = score

由于类可以起到模板的作用,因此,可以在创建实例的时候,把一些我们认为必须绑定的属性强制填写进去。
以学生类为例,通过定义一个特殊的__init__方法,在创建实例的时候,就把name,score等属性绑上去。

self

谁调用这个对象,self就指向谁。
如果使用了self.变量名,同一个类里面的方法都可以使用。

class Student(object):

    def __init__(self, name, score):
        self.name = name
        self.score = score
    def test(self)
        print(self.name) 

__str__(self)方法

获取对象的描述信息,如果没有使用该方法,print对象时输出的是内存地址,而使用了str(),方法内的描述信息是什么就输出什么。

实例(烤土豆)

#创建一个五谷杂粮类
class Cereals():
    def __init__(self):
        self.status = "生的"
        self.bake_time = 0

    def __str__(self):
        return "土豆考了%d分钟,状态是:%s" % (self.bake_time, self.status)

    def bake(self, time):
        self.bake_time += time
        if self.bake_time >= 0 and self.bake_time < 3:
            self.status = "生的"
        elif self.bake_time >= 3 and self.bake_time <= 5:
            self.status = "半生不熟"
        elif self.bake_time > 5 and self.bake_time <= 8:
            self.status = "熟了"
        elif self.bake_time > 8:
            self.status = "烤糊了"
if __name__ == '__main__':
    # 创建土豆对象
    td = Cereals()
  # 循环烤9分钟
    for i in range(1,9):
        td.bake(1)
        print(td)


输出结果:
土豆考了1分钟,状态是:生的
土豆考了2分钟,状态是:生的
土豆考了3分钟,状态是:半生不熟
土豆考了4分钟,状态是:半生不熟
土豆考了5分钟,状态是:半生不熟
土豆考了6分钟,状态是:熟了
土豆考了7分钟,状态是:熟了
土豆考了8分钟,状态是:熟了
土豆考了9分钟,状态是:烤糊了

__del__(self)方法

对象结束前,删除对象的方法,就相当于玩王者荣耀英雄死完后,会发一声惨叫的功能。
__del__(self)方法,可以做一些善后工作。

__new__(cls)方法

用来创建对象,创建对象实际要做三件事
1、调用new方法来创建对象,然后找一个特殊的变量来接收new的返回值
这个返回值表示 创建出来的对象的引用。
2、__init__(刚刚创建出来对象的引用)。
3、返回对象的引用。

双下划线的作用

私用方法,外面不能调用,只能在类里面其他方法可以调用。

def __方法名():
    pass

测量对象的引用个数

# 导入sys模块使用里面的方法进行检查
import sys
# 检查当前有多少个对象指向了同一个类
sys.getrefcount(对象名)
# 返回个数比实际的大1,将得到的数减1则是实际的引用个数。

相关文章

  • 21.Python编程:访问权限

    前面一节重点学习了Python3中的面向对象最基础的类和对象的知识:类的定义、对象、构造方法、属性和方法等,在类中...

  • Python3面向对象-类和对象

    当创建一个对象时,就是用一个模子,来创造一个实物。模子称为类,实物称为对象。 类的构成 类由三个部分构成1、类的名...

  • Python 面向对象 - 01 基本概念

    目录一、面向过程 和 面向对象 基本概念1.1 面向过程1.2 面向对象二、类和对象2.1 类2.2 对象2.3 ...

  • 面向对象分析

    Python3 面向对象编程 所谓对象,一切事物皆为对象,在编程中对象实际就是数据与相关行为对集合。 对象与类之间...

  • Python精简入门学习(十四)

    Python精简入门学习之面向对象(oop) -面向对象 -类和对象

  • java基础-day07-面向对象

    面向对象 1. 面向对象 1.1 生活中的面向对象和面向过程 1.2 类和对象 类对象人类马云爸爸,麻花藤,乔布斯...

  • 面向对象01-方法(重载)/包/修饰符

    面向对象01-方法(重载)/包/修饰符 [TOC] 1、面向对象与面向过程 2、类和对象 2.1、类和对象的的创建...

  • Java类和对象

    Java类和对象 类 面向对象和面向过程 面向对象:Object Oriented把系统中需要处理的数据和这些数据...

  • 面对对象高级编程

    面向对象高级编程: 面向对象编程:封装、继承和多态 面向对象高级编程:多重继承、定制类和元类

  • php初级讲义10-类和对象

    类和对象 类是对一类事物的描述,对象是类的实例。在面向对象编程思想中一切事物都是对象,类和对象是面向对象编程的重要...

网友评论

      本文标题:Python3面向对象-类和对象

      本文链接:https://www.haomeiwen.com/subject/koepnftx.html