返回顶部
首页 > 资讯 > 后端开发 > Python >Python 编程基础 | 第五章-类 | 5.2、属性成员
  • 929
分享到

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

python开发语言 2023-10-26 15:10:56 929人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

一、属性成员 属性成员是指类中定义的变量,即属性,根据定义位置,又可以分为类属性和实例属性,下面分别进行介绍。 1、实例属性 实例属性是指定义在类的方法中的属性,该属性属于当前实例,例如:定

一、属性成员

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

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__类的所有父类构成的元素

示例:

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()

来源地址:https://blog.csdn.net/cloud323/article/details/133691527

--结束END--

本文标题: Python 编程基础 | 第五章-类 | 5.2、属性成员

本文链接: https://lsjlt.com/news/463607.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python 编程基础 | 第五章-类 | 5.2、属性成员
    一、属性成员 属性成员是指类中定义的变量,即属性,根据定义位置,又可以分为类属性和实例属性,下面分别进行介绍。 1、实例属性 实例属性是指定义在类的方法中的属性,该属性属于当前实例,例如:定...
    99+
    2023-10-26
    python 开发语言
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作