对象属性和类属性 | 手把手教你入门Python之五十八

简介: 通过类创建的对象被称为 实例对象,对象属性⼜称为实例属性,类属性就是类对象所拥有的属性,它被该类的所有实例对象所共有,类属性可以通过类对象或者实例对象访问。

上一篇:Python的内置属性 | 手把手教你入门Python之五十七
下一篇:私有属性和方法的使用 | 手把手教你入门Python之五十九

本文来自于千锋教育在阿里云开发者社区学习中心上线课程《Python入门2020最新大课》,主讲人姜伟。

对象属性和类属性

在⾯向对象开发中,使⽤类创建出来的实例是⼀个对象,那么,类是否是⼀个对象呢?

实例属性

通过类创建的对象被称为 实例对象,对象属性⼜称为实例属性,记录对象各⾃的数据,不同对象的同名实例属性,记录的数据各⾃独⽴,互不⼲扰。

class Person(object):
    def __init__(self,name,age):
        # 这⾥的name和age都属于是实例属性,每个实例在创建时,都有⾃⼰的属性
        self.name = name
        self.age = age
        
# 每创建⼀个对象,这个对象就有⾃⼰的name和age属性
p1 = Person('张三',18)
p2 = Person("李四",20)

类属性

类属性就是类对象所拥有的属性,它被该类的所有实例对象所共有,类属性可以通过类对象或者实例对象访问。类属性只能通过类对象来修改,实例对象无法修改类属性。

class Dog:
    type = "狗" # 类属性

dog1 = Dog()
dog2 = Dog()

# 不管是dog1、dog2还是Dog类,都可以访问到type属性
print(Dog.type) # 结果:狗
print(dog1.type) # 结果:狗
print(dog2.type) # 结果:狗

使⽤场景:

  1. 类的实例记录的某项数据始终保持⼀致时,则定义类属性。
  2. 实例属性要求每个对象为其单独开辟⼀份内存空间来记录数据,⽽类属性为全类所共有 ,仅占⽤⼀份内存,更加节省内存空间。

注意点:
1> 尽量避免类属性和实例属性同名。如果有同名实例属性,实例对象会优先访问实例属性。

class Dog(object):
    type = "狗" # 类属性

    def __init__(self):
        self.type = "dog" # 对象属性

# 创建对象
dog1 = Dog()

print(dog1.type) # 结果为 “dog” 类属性和实例属性同名,使⽤ 实例对象 访问的是 实例属性

2> 类属性只能通过类对象修改,不能通过实例对象修改

lass Dog(object):
    type = "狗" # 类属性

# 创建对象
dog1 = Dog()
dog1.type = "dog" # 使⽤ 实例对象 创建了对象属性type

print(dog1.type) # 结果为 “dog” 类属性和实例属性同名,访问的是实例属性
print(Dog.type) # 结果为 "狗" 访问类属性

# 只有使⽤类名才能修改类属性
Dog.type = "⼟狗"
print(Dog.type) # ⼟狗
dog2 = Dog()
print(dog2.type) # ⼟狗

3> 类属性也可以设置为私有,前边添加两个下划线。 如:

class Dog(object):
    count = 0 # 公有的类属性
    __type = "狗" # 私有的类属性
    
print(Dog.count) # 正确
print(Dog.__type) # 错误,私有属性,外部⽆法访问。

配套视频

相关文章
|
26天前
|
存储 数据采集 人工智能
Python编程入门:从零基础到实战应用
本文是一篇面向初学者的Python编程教程,旨在帮助读者从零开始学习Python编程语言。文章首先介绍了Python的基本概念和特点,然后通过一个简单的例子展示了如何编写Python代码。接下来,文章详细介绍了Python的数据类型、变量、运算符、控制结构、函数等基本语法知识。最后,文章通过一个实战项目——制作一个简单的计算器程序,帮助读者巩固所学知识并提高编程技能。
|
14天前
|
存储 数据处理 Python
Python如何显示对象的某个属性的所有值
本文介绍了如何在Python中使用`getattr`和`hasattr`函数来访问和检查对象的属性。通过这些工具,可以轻松遍历对象列表并提取特定属性的所有值,适用于数据处理和分析任务。示例包括获取对象列表中所有书籍的作者和检查动物对象的名称属性。
24 2
|
27天前
|
IDE 程序员 开发工具
Python编程入门:打造你的第一个程序
迈出编程的第一步,就像在未知的海洋中航行。本文是你启航的指南针,带你了解Python这门语言的魅力所在,并手把手教你构建第一个属于自己的程序。从安装环境到编写代码,我们将一步步走过这段旅程。准备好了吗?让我们开始吧!
|
27天前
|
测试技术 开发者 Python
探索Python中的装饰器:从入门到实践
装饰器,在Python中是一块强大的语法糖,它允许我们在不修改原函数代码的情况下增加额外的功能。本文将通过简单易懂的语言和实例,带你一步步了解装饰器的基本概念、使用方法以及如何自定义装饰器。我们还将探讨装饰器在实战中的应用,让你能够在实际编程中灵活运用这一技术。
38 7
|
28天前
|
开发者 Python
Python中的装饰器:从入门到实践
本文将深入探讨Python的装饰器,这一强大工具允许开发者在不修改现有函数代码的情况下增加额外的功能。我们将通过实例学习如何创建和应用装饰器,并探索它们背后的原理和高级用法。
42 5
|
27天前
|
机器学习/深度学习 人工智能 算法
深度学习入门:用Python构建你的第一个神经网络
在人工智能的海洋中,深度学习是那艘能够带你远航的船。本文将作为你的航标,引导你搭建第一个神经网络模型,让你领略深度学习的魅力。通过简单直观的语言和实例,我们将一起探索隐藏在数据背后的模式,体验从零开始创造智能系统的快感。准备好了吗?让我们启航吧!
70 3
|
28天前
|
缓存 监控 算法
Python内存管理:掌握对象的生命周期与垃圾回收机制####
本文深入探讨了Python中的内存管理机制,特别是对象的生命周期和垃圾回收过程。通过理解引用计数、标记-清除及分代收集等核心概念,帮助开发者优化程序性能,避免内存泄漏。 ####
38 3
|
开发者 Python
继承的注意事项类属性案例练习 | 手把手教你入门Python之六十四
在Python中,继承可以分为单继承、多继承和多层继承。
继承的注意事项类属性案例练习 | 手把手教你入门Python之六十四
|
开发者 Python 设计模式
|
27天前
|
人工智能 数据可视化 数据挖掘
探索Python编程:从基础到高级
在这篇文章中,我们将一起深入探索Python编程的世界。无论你是初学者还是有经验的程序员,都可以从中获得新的知识和技能。我们将从Python的基础语法开始,然后逐步过渡到更复杂的主题,如面向对象编程、异常处理和模块使用。最后,我们将通过一些实际的代码示例,来展示如何应用这些知识解决实际问题。让我们一起开启Python编程的旅程吧!