Python学习笔记-面向对象(类的定义和对象创建)

1. 面向对象

世间万物皆对象

1.0 概述

类是一个抽象的概念,Python通过类来描述一类对象的特征(属性)和动作(方法)。

例如电脑,其特征有 CPU内存主板硬盘显卡;其动作有 开机关机重启。将这些特点提取出来并加以描述,就形成了一个 电脑类

类相当于模型,对象相当于用模型构建出来的具体事物

类通过实例化生成一个对象

开发中:类—>实例化—>对象

现实中:对象—>抽象,提取,封装—>类

1.1 定义格式

class 类名:  # 类名 类的首字母大写,遵循驼峰命名法
    类属性
    .......
    def 方法():
        pass
    .......
class Computer:
    cpu = 'Intel Core i9-9900K'
    memory = 'Kingston 16G*2 3200MHz'
    gpu = 'Nvidia RTX 2080Ti'
    disk = 'Samsung 970EVO Plus'
    def POST(self):
        print(self.cpu)
        print(self.memory)
        print(self.gpu)
        print(self.disk)
        pass
    def turnOn(self):
        self.POST()
        print('正在启动计算机')
        pass
    def turnOff(self):
        print('正在关机')
        pass
    pass

1.2 对象的创建与调用

创建一个对象时,会以类为模板进行创建,开辟新的内存空间。直到对对象作出修改前,这片内存空间是空的

对象的动态赋值:若对象中不存在指定的属性,则会在该对象的内存空间中动态添加(可以是类中不存在的属性)

内存空间为空为什么还能调用到属性值?

这与搜索原则有关:先找对象自身,对象自身没有则向类中找,类中没有则报错

类属性:在类的空间中,既可以被类访问也可以被对象访问,在定义类的时候就被创建

对象属性:在对象的空间中的属性,只能被当前的对象访问,在创建对象后才能创建,或使用 __init__ 创建

class Computer:
    cpu = 'Intel Core i9-9900K'         # 类属性
    pass
com1 = Computer()                       # 创建一个对象com1
print('Computer.cpu',id(Computer.cpu))  # 打印Computer.cpu的内存地址
print('com1.cpu-A\t',id(com1.cpu))      # 打印com1.cpu的内存地址
com1.cpu = 'i7-9750H'                   # 对象属性动态赋值com1.cpu
com1.gpu = 'RTX 2080Ti'                 # 对象属性动态赋值com1.gpu--该属性在类中不存在
print('com1.cpu-B\t',id(com1.cpu))      # 打印com1.cpu的内存地址
print(com1.gpu)
===========================
Computer.cpu 1574438452440              
com1.cpu-A	 1574438452440              # 未修改前的内存地址与类中的地址相同
com1.cpu-B	 1574408438928              # 修改后地址改变
RTX 2080Ti                              # 可以访问到新添加的gpu属性值

1.3 创建对象时对象属性的创建方法

系统在某种条件下回自动触发的方法就被称为 魔术方法 无需程序员手动调用

__init__(self) 方法的触发条件就是 创建对象时,功能类似构造函数,为对象创建对象属性。self表示对象自身

1.3.1 写死的方法
class Computer:
    def __init__(self):
        self.cpu = 'i9-9900K'
        self.gpu = 'RTX 2080Ti'
        pass
    pass
com1 = Computer()

对象创建执行顺序:

  1. 找到Computer内存空间
  2. 参照Computer内存空间为com1开辟内存空间
  3. 找到魔术方法 __init__(self),执行魔术方法(self值为第2步给com1开辟的内存空间地址)
  4. 开始在com1的内存空间中执行对象属性动态赋值
  5. 给com1对象赋值(把内存空间地址给com1)
1.3.2 通过参数创建的方法
class Computer:
    def __init__(self,cpu,gpu):
        self.cpu = cpu
        self.gpu = gpu
        pass
    pass
com1 = Computer('i9-9900K','RTX 2080Ti')

对象创建执行顺序:

  1. 找到Computer内存空间
  2. 参照Computer内存空间为com1开辟内存空间
  3. 找到魔术方法 __init__(self,cpu,gpu),执行魔术方法
  4. 根据创建时传入的值在com1的内存空间中执行对象属性动态赋值
  5. 给com1对象赋值(把内存空间给com1)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值