Python78:核心语法-面向对象基础-类与对象

类与对象

定义类与创建对象

类的定义

  • 定义类的语法如下:(动态添加属性)

**说明:**类名的命名规范,遵循大驼峰命名法,每个单词的首字母都是大写,单词之间没有分隔符,比如:UserInfo,UserAccount 。

说明:__dict__是Python中用户自定义类实例的一个特殊属性,用于以字典形式存储对象的属性。

实例一:

第二章/22.面向对象基础.py

python 复制代码
# 定义类 ----> 不推荐 动态地为对象添加属性
class Car:
    pass

# 创建对象
c1 = Car()
# 动态地为对象添加属性(会降低项目的可读性,增加开发的难度)
c1.color = "red"
c1.brand = "BMW"
c1.name = "X5"
c1.price = 500000

print(c1) # <__main__.Car object at 0x000001FC1DA69400>  0x000001FC1DA69400存放属性的地址(会变化)
print(c1.brand)
print(c1.__dict__) # 会将对象中的所有属性以字典的形式输出出来
python 复制代码
D:\py_project_heima\.venv\Scripts\python.exe D:\py_project_heima\第二章\22.面向对象基础.py 
<__main__.Car object at 0x0000023860589400>
BMW
{'color': 'red', 'brand': 'BMW', 'name': 'X5', 'price': 500000}

注意:这种方法,动态地为对象添加属性,会降低项目的可读性,增加开发的难度,所以不推荐。

  • 定义类的语法如下:(定义类时指定实例属性)

**说明:**定义在类的外面的称之为函数,定义在类中的函数称之为方法。

实例二:

第二章/22.面向对象基础.py

python 复制代码
# 定义类
class Car:
    # __init__ 方法是初始化的方法,会在对象创建时自动调用,可以在该方法中为对象设置对应的属性;
    # self:是第一个参数,表示当前所创建出来的实例对象
    def __init__(self, c_color, c_brand, c_name, c_price):
        self.color = c_color
        self.brand = c_brand
        self.name = c_name
        self.price = c_price
        print("Car 类型的对象初始化完毕,对象属性已经添加完毕。")

# 创建对象
c1 = Car("红色", "BMW", "X7", 800000)
print(c1.__dict__)


c2 = Car("白色", "奔驰", "E300", 450000)
print(c2.__dict__)
python 复制代码
D:\py_project_heima\.venv\Scripts\python.exe D:\py_project_heima\第二章\22.面向对象基础.py 
Car 类型的对象初始化完毕,对象属性已经添加完毕。
{'color': '红色', 'brand': 'BMW', 'name': 'X7', 'price': 800000}
Car 类型的对象初始化完毕,对象属性已经添加完毕。
{'color': '白色', 'brand': '奔驰', 'name': 'E300', 'price': 450000}

小结:

  1. 定义类时,类名的命名规范?
  • 大驼峰命名法,UserInfo,UserAccount
  1. 定义类时,__init__方法的作用?self参数的作用?
  • init 是初始化方式,对象创建时自动调用,主要用于设置对象的初始状态(设置对象属性)
  • self是类中定义的方法的第一个参数,表示当前创建的实例对象

**声明:**本篇学习笔记参考黑马程序员相关课程,部分素材来源于网络公开资料及本人补充;文中为个人整理复盘,仅供学习交流使用。

相关推荐
duansamve14 分钟前
Python中进程
python
日日大王学编程1 小时前
AI Agent 技术发展历程、演进逻辑与技术范式综述
人工智能·python
春涧草茶1 小时前
慢就是快16-1协程
开发语言·前端·python
5233AI开发笔记2 小时前
API 返回 429:先区分限速、并发和配额,再决定是否重试
python
databook2 小时前
经常听到的透视表是干什么的?
python·数据分析·pandas
特立独行的猫A2 小时前
我用仓颉写了个多平台发文工具:一份 Markdown,一条命令发六个平台
java·后端·python
陆陆陆六2 小时前
# 五个AI引擎的答案采集:反爬、去重与时间窗对齐的三个工程细节
python·net·ai答案采集
小小张说故事5 小时前
Python 的 a[1:5:2] 到底切出了什么?拆开 slice 对象、__getitem__ 与负步长那次反向
python
wuyk5555 小时前
PyQt6-第15讲-数据可视化QChart
python·ui·信息可视化·pyqt