python基础笔记——面向对象

概念介绍

面向对象和面向过程是两种编程思想,编程思想是指对同一个问题的套路方式

面向对象:注重过程,实现细节(函数)
面向对象:注重结果 (封装、继承、多态为面向对象的三大技术)

类和对象

面向对象中有两个重要的概念:类和对象

类:泛指,由对象抽象来的,类在代码中用关键字class定义
	注意:object是所有类的基类(相当于上帝),即最开始的类
	类名:遵循大驼峰命名规范(‘建议,可不用)
	 格式:
		class 类名(object):
				类中代码
对象:特指,是具体存在代码中的,对象由类创建

类外部添加获取属性

不同对象有自己的属性值,不同对象之间属性值没有关系
self 作为类方法的第一个参数,在对象方法调用时,不需要手动传递,由python解释器自动调用该方法的对象传递给self,所以self这个参数代表对象(self是一个形参,可以写成其他的,但默认是self)
class Pet(object):
    # 定义函数
    def home(self):
        print('我养了一只宠物')


# 创建对象
pet = Pet()
# 调用函数
pet.home()  # 输出:我养了一只宠物
# 为对象添加属性		对象.属性名 = 属性值
pet.name = '仓鼠'  # pet类中添加name属性,属性值 仓鼠
# 获取对象属性值		对象.属性名
print(pet.name)  # 仓鼠
# 修改属性值,如果存在修改,不存在添加
pet.name = '哈士奇'
print(pet.name)	# 已有仓鼠,所以改为哈士奇

类内部获取属性值

class Pet(object):
    def home(self):
        print(f'self:id{self}')
        print(f'我养了一只{self.name}做宠物')

# 创建对象
pet = Pet()
pet.name = '仓鼠'
pet.home()
print(pet)
# id
# self:id<__main__.Pet object at 0x00000214B46BB198>
# 我养了一只仓鼠做宠物
# <__main__.Pet object at 0x00000214B46BB198>

魔法方法

在python的类中有一种方法,这类方法以两个下划线开头和两个下划线结尾,并在满足某特定条件的情况下,会自动调用,这类方法称为魔术方法

int()

调用时机:在创建对象之后,会立即调用
作用:
  1. 用来给对象添加属性,给对象属性一个初始值
  2. 代码的业务需求,每创建一个对象,都需要执行的代码可以写在__init__中
注意:

如果__init__方法中出现self之外的形参,那么在创建对象的时候,需要额外的形参传递实参值

class Pet(object):
    def __init__(self):
        print("-" * 30)
        # 对象.属性名 = 属性值
        self.name = '仓鼠'
        self.name2 = '哈士奇'

# 创建对象
pet = Pet()
print(f"我养了一只{pet.name}")
pet2 = Pet()
print(f"我养了一只{pet2.name2}")
# ------------------------------
# 我养了一只仓鼠
# ------------------------------
# 我养了一只哈士奇

# 带参数__init__方法
class Pet(object):
    def __init__(self, name, age):
        self.name = name
        self.age = age

pet = Pet('仓鼠', 1)
print(f"我养了一只{pet.name},它{pet.age}岁了")
# 我养了一只仓鼠,它1岁了

__str__方法

调用时机:
  • print(对象)会自动调用__str__方法,打印输出结果是__str__方法的返回值
  • str(对象)类型转换,将自定义对象转换为字符串的时候,会自动调用
应用:
  • 打印对象的时候,输出一些属性信息
  • 需要将对象转换为字符串类型的时候
注意:方法必须返回一个字符串,只有self一个参数
class Pet(object):
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __str__(self):
        return f"我养了一只{self.name},今年{self.age}岁"


pet = str(Pet('仓鼠', 2))
print(pet)
# 我养了一只仓鼠,今年2岁

__def__方法

调用时机:对象在内存中被销毁的时候(引用计数为0)会自动调用__del__方法
注意:
  • 程序代码运行结束,在运行过程中,创建的所有对象和变量都会被删除
  • 使用del变量,将这个对象的引用计数变为0,会自动调用
引用计数:是Python内存管理的一种机制,是指一块内存,有多少个变量在引用
  • 当一个变量引用一块内存的时候,引用计数加1
  • 当删除一个变量,或这个变量不在引用这块内存,引用计数减1
  • 当内存的引用计数变为0的时候,这块内存被删除,内存中的数据被销毁
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值