Python 编程基础 | 第五章-类 | 5.2、属性成员

这篇具有很好参考价值的文章主要介绍了Python 编程基础 | 第五章-类 | 5.2、属性成员。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、属性成员

属性成员是指类中定义的变量,即属性,根据定义位置,又可以分为类属性实例属性,下面分别进行介绍。

1、实例属性

实例属性是指定义在类的方法中的属性,该属性属于当前实例,例如:定义一个Dog类,在该类的__init__()方法中定义2个实例属性,代码如下:

class Dog:
    "实现一个小狗类"
    def __init__(self, name, age) -> None:
        self.name = name
        self.age = age
    
    def sit(self):
        "小狗接收到蹲下指令"
        print(f"{self.name} is now sitting")

my_dog = Dog("jack", 10)
my_dog.sit()

可以使用.来访问对象的属性,但是,实例属性只能通过实例名访问,不能通过类名访问,如果使用类名访问会报错

2、类属性

类属性是指在定义类中,并且在函数体外的属性,类属性可以在类的所有实例之间共享,例如:定义一个雁类,在该类中定义3个类属性,代码如下:

class Geese:
    """大雁类"""
    beak_1 = "喙,比较尖"   # 定义类属性(喙)
    wing_1 = "翅膀,比较大" 
    claw_1 = "爪,行走自如"

    def __init__(self):
        print("我是大雁类!我有一下特征:")
        print(Geese.beak_1)   # 访问类属性
        print(Geese.wing_1)
        print(Geese.claw_1)

my_geese = Geese()

通过类名.的方式访问类属性

3、内置类属性

Python有一些内置的类属性,记录类相关的信息,如下:

属性 功能
__dict__ 类的属性(包含一个字典,由类的数据属性组成)
__doc__ 类的文档字符串
__name__ 类名
__module__ 类定义所在的模块
__bases__ 类的所有父类构成的元素

示例:文章来源地址https://www.toymoban.com/news/detail-719441.html

class Dog:
    "实现一个小狗类"
    def __init__(self, name, age) -> None:
        self.name = name
        self.age = age
    
    def sit(self):
        "小狗接收到蹲下指令"
        print(f"{self.name} is now sitting")

print (f"Dog.__doc__:{Dog.__doc__}")
print (f"Dog.__name__:{Dog.__name__}")
print (f"Dog.__module__:{Dog.__module__}")
print (f"Dog.__dict__:{Dog.__dict__}")
print (f"Dog.__bases__:{Dog.__bases__}")

4、动态调整属性 – 反射

在代码运行之前,类/实例的属性名和值都是不知道的。要在代码的运行过程当中,才知道要给类/对象、添加/删除/修改额外的属性。类的属性和方法,此处统一称为atrribute(属性),动态处理属性的方法有下面这些,如下:

  • hasattr(对象/类, 属性名):对象/类 是否有这个属性,有就是True, 没有就是False
  • getattr(对象/类, 属性名):获取 对象/类 的属性值
  • setattr(对象/类, 属性名, 属性值):添加 对象/类 的属性和值, 如果属性存在,修改 对象/类 的属性值
  • delattr(对象/类, 属性名):删除 对象/类 的属性和值

示例:

class Person:
    def __init__(self, name):
        self.name = name
        self._private_money = 2000
        self.__secrect = "秘密"

    def eat(self, food):
        print(f"喜欢吃什么?{food}")

    def sleep(self):
        print("睡觉中.....")

# 类属性
if hasattr(Person, "hello"):
    print(Person.hello)
else:
    setattr(Person, "hello", "hello,class")
print(Person.hello)

# 实例属性
f = Person("base")
ss = Person("sss")
if hasattr(f,"sex"):
    print(f.sex)
else:
    setattr(f, "sex", "女")

print(f.sex)    # 输出结果:女
# print(ss.sex) # 编译报错:'Person' object has no attribute 'sex'

# 删除f对象的name属性之后,再次访问f的name属性
delattr(f, "name")
# print(f.name) # 编译报错:'Person' object has no attribute 'name'
print(ss.name)

# 判断对象有没有某个方法
f = Person("base")
print(f.__dict__)

if hasattr(f, "sleep"):
    f.sleep()

到了这里,关于Python 编程基础 | 第五章-类 | 5.2、属性成员的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python头歌-python第五章作业

    第1关 回文素数 第2关 反素数 第3关 哥德巴赫猜想 第4关 货币转换 第5关 个人信息提取 第6关 身份证号基本信息 第7关 各位数字之和为5的数 第8关 字符串长度 第9关 字符串加密 第10关 输出单词 第11关 字符大小写转换 第12关 查找指定字符 第13关 随机密码生成器 第

    2024年04月12日
    浏览(49)
  • Python第五章作业

    目录 第1关 回文素 第2关 反素数 第3关 哥德巴赫猜想 第4关 货币转换 第5关 个人信息提取 第6关 身份证号基本信息 第7关 各位数字之和为5的数 第8关 字符串长度 第9关 字符串加密 第10关 输出单词 第11关 字符大小写转换 第12关 查找指定字符 第13关 随机密码生成器

    2024年02月04日
    浏览(54)
  • Python急速入门——(第五章:列表)

    变量可以存储一个元素,而列表可以存储N多个不同类型的数据,程序可以对这些数据进行整体操作(列表也相当于其他语言中的数组)。 一个输出结果: 内存示意图: 列表对象的 id 是778,存储的是当前列表中其他对象的 id ;列表对象的名字是 arr , arr 的id指向列表对象。

    2024年02月05日
    浏览(55)
  • 【头歌-Python】Python第五章作业(初级)(7~16)

    如果代码存在问题,麻烦大家指正 ~ ~ 有帮助麻烦点个赞 ~ ~ 任务描述 输入一个1000以内的正整数 n,在同一行内输出 [0,n] 之间各位数字之和为5的数,数字之间用空格分开(行末有一个空格)。 输入格式 输入一个1000以内的正整数 n 输出格式 符合条件的数 示例 输入: 输出:

    2024年02月03日
    浏览(133)
  • 【头歌-Python】Python第五章作业(初级)(1~6)

    如果代码存在问题,麻烦大家指正 ~ ~ 有帮助麻烦点个赞 ~ ~ 任务描述 回文素数是指一个数既是素数又是回文数。例如,131,既是素数又是回文数。 用户输入一个正整数 n , 请你在一行内输出从小到大排列的的前n个回文素数,数字后面用一个空格进行分隔。 输入格式 输入一

    2024年02月03日
    浏览(242)
  • 【CSS系列】第五章 · CSS文本属性

            Hello大家好, 我是【 麟-小白 】,一位 软件工程 专业的学生,喜好 计算机知识 。希望大家能够一起 学习进步 呀!本人是一名 在读大学生 ,专业水平有限,如发现 错误 或 不足之处 ,请多多指正!谢谢大家!!!         如果 小哥哥小姐姐们 对我的文章感兴趣

    2024年02月04日
    浏览(32)
  • 使用 Python 和 Pygame 制作游戏:第一章到第五章

    原文: inventwithpython.com/pygame/chapter1.html 译者:飞龙 协议:CC BY-NC-SA 4.0 在阅读本书之前,如果您了解一些 Python 编程知识(或者知道如何使用 Python 之外的其他语言进行编程),可能会有所帮助;但是即使您没有,您仍然可以阅读本书。编程并不像人们想象的那么难。如果您遇

    2024年01月17日
    浏览(75)
  • 《Python 程序设计》张莉主编 第五章:程序控制结构 课后习题答案(一)

    本章主要介绍了在 Python 中对顺序结构、选择结构和循环结构的语句描述,并对列表解析和生成器表达式作简要介绍。 程序 = 算法 + 数据结构 而无论多么复杂的算法,都可以使用上述的三种基本控制中的一种或几种组成。 BTW , 这一章的作业有点长,所以打算分两次上传 (实

    2024年02月07日
    浏览(48)
  • CMD与DOS脚本编程【第五章】

    预计更新 第一章. 简介和基础命令 1.1 介绍cmd/dos脚本语言的概念和基本语法 1.2 讲解常用的基础命令和参数,如echo、dir、cd等 第二章. 变量和运算符 2.1 讲解变量和常量的定义和使用方法 2.2 介绍不同类型的运算符和运算规则 第三章. 控制流程和条件语句 3.1 介绍if、else、for、

    2024年02月06日
    浏览(41)
  • webGL编程指南 第五章 MultiAttributeColorjs.js

    我会持续更新关于wegl的编程指南中的代码。 当前的代码不会使用书中的缩写,每一步都是会展开写。希望能给后来学习的一些帮助 git代码地址 :空 上一章节中只要使用了同一个buffer传递,位置与点的大小。 本案例中我们将学习新的varying。次变量可以对顶点进行赋值

    2024年02月06日
    浏览(93)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包