Python 知识点分集06

本文介绍了Python的面向对象编程概念,包括面向过程与面向对象的对比,类与对象的定义,以及属性和方法的使用。重点阐述了类的创建、对象的实例化、类属性和实例属性的区别,并提到了构造函数`__init__`、析构函数`__del__`以及`__str__`方法的作用。
摘要由CSDN通过智能技术生成
  1. 面向过程:是分析出解决问题所需要的步骤,然后用函数把这些步骤一步步实现,使用的时候一个个依次调用就可以了。eg:手洗衣服——注重过程:衣服 -> 放在盆里 -> 放点洗衣粉 -> 加水 -> 浸泡十分钟 -> 搓一搓 -> 清洗干净 -> 拧干 -> 晾起来。

  1. 面向对象:是把构成问题事物分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。eg:衣服 -> 打开全自动洗衣机 -> 扔衣服 -> 按钮 -> 晾起来。对象:洗衣机。

  1. 类和对象:在面向对象编程过程中,有两个重要组成部分:类和对象。

①类:用来描述具有相同属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。

类的定义:class 类名:... (类名的规范:大驼峰命名规则:每个单词首字母大写)

②对象:通过类定义的数据结构实例,是类的具体表现,是面向对象编程的核心。

创建对象的格式:对象名 = 类名()

# 创建类
class Test:
    pass
# 创建对象(会分配新的内存空间) ————对象名 = 类名()
p = Test()
print(p)

③类和对象的区别:类是对客观世界中事物的抽象,而对象是类实例化后的实体。

④类和对象的关系:对象是由类派生的、创建的。一个类可以创建无穷多个对象,每个对象都属于类。类只有创建对象才可以使用。

  1. 方法:类中定义的函数

self:是实例方法中的第一个参数,代表调用该方法的对象本身

# 定义类
class Test:
    # 定义方法  在类里面的函数
    def add(self):    # self =》 对象
        print('hi')
        print(self)  # 调用该方法的对象的信息

t = Test()  # 直接通过类名不能调用实例方法,只能通过对象进行调用
print(f't:{t}')             # t:<__main__.Test object at 0x0000027A0CF02FD0>
t1 = Test()
print(f't1:{t1}')           # t1:<__main__.Test object at 0x0000027A0CF72310>
t1.add()                    # hi\n  (t1的对象本身)<__main__.Test object at 0x0000027A0CF72310>
  1. 属性:类属性和实例属性

类属性:在类里面、方法外面定义

实例属性:定义在方法里面,定义格式为:self.属性名 = 值

  1. 添加实例属性的方式:类里面添加实例属性:self.实例属性名 = 值

类外面添加实例属性:对象名.实例属性名 = 值

  1. 获取实例属性:类里面获取实例属性:self.实例属性名

类外面获取实例属性:对象名.实例属性名

# 属性
class Fun:
    # 类属性,定义在类中的属性
    test = '类属性'

    def data(self):
        # 实例属性,定义在实例方法中, self.属性名 = 值
        self.name = '实例属性'
        print(self.name)

# 类外面访问类属性 类名.属性名/对象名.属性名
print(Fun.test)            # 类属性
f = Fun()
print(f.test)              # 类属性

# 类外面访问实例属性,对象名.实例属性名   注意:类名不能访问实例属性 ,只有调用方法,该方法才会执行
f.data()                  # 实例属性
print(f.name)             # 实例属性
  1. 构造函数:__init__方法具有初始化的作用,也就是当该类被实例化的时候会执行该函数

class Funa:
    # 构造函数
    def __init__(self):
        print('这是一个构造函数')

# 创建对象时,__init__函数会自动执行
f = Funa()            # 这是一个构造函数

class Func:
    def __init__(self, mz, nl):
        self.name = mz
        self.age = nl
        print(f'我的名字是{self.name},我的年龄是{self.age}岁')
f1 = Func('tony', 18)   # 我的名字是tony,我的年龄是18岁
  1. 析构函数:__del__是对象在被垃圾回收的时候起作用的一个方法,它的执行一般也就意味着对象不能继续引用,回收内存

# 析构函数
class Func:
    def __init__(self, mz, nl):
        self.name = mz
        self.age = nl
        print(f'我的名字是{self.name},我的年龄是{self.age}岁')

    def __del__(self):
        print(f'{self.name}被回收')
f1 = Func('tony', 18)       # 我的名字是tony,我的年龄是18岁\n     tony被回收 
# del f1               # (手动回收)   
f2 = Func('o', 18)         # 我的名字是o,我的年龄是18岁\n  t被回收
# 当代码语句都执行完,创建的对象会被回收,就自动执行__del__函数
  1. __str__函数:当使用print输出对象的时候,若定义了__str__(self)方法,就可以自定义打印内容

# __str__函数    自定义对象的描述信息
class Person:
    def __init__(self, mz, nl):
        self.name = mz
        self.age = nl
        print(f'我的名字是{self.name},我的年龄是{self.age}岁')

    def __str__(self):
        return '自我介绍'     # 设置对象信息的描述,必须使用return返回字符串的格式

p = Person('tony', 18)
print(p)    # 若没有__str__函数,则会返回<__main__.Person object at 0x000001767D782FD0>
# 若有__str__函数,则会返回‘自我介绍’的内容
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值