Python中的实例属性和私有属性

本文介绍了Python中实例属性和私有属性的概念。实例属性在类实例化时通过`__init__`方法创建,类属性则可以直接访问。私有属性通过双下划线`__`标记,防止外部直接修改,但可通过内部方法访问。Python中并没有绝对的私有属性,只是通过名称转换提供了一种避免直接修改的机制。`__dir__()`方法可用于查看实例的属性,揭示了私有属性的实际名称。
摘要由CSDN通过智能技术生成

相关知识点


Python中的内置装饰器之property

实例属性


实例属性和类属性的区别在于实例属性定义在类的__init__()魔法方法中,而类属性定义在类下:

class C:
	b = 1  # 类属性

	def __init__(self):
		self.x = None  # 实例属性

对于类属性这里不做说明,主要描述实例属性,

实例属性生效的方式要先知道的一点是Python中实例化一个类,类的魔法方法__init__()会被自动调用,

所以对于类对象C来说,是不存在实例属性的,在C类对象被实例化的时候,实例属性x才会被创建:

class C:
	b = 1

	def __init__(self):
		self.x = None

print(C.b)
print(C.x)

上述代码中行7print会被执行,因为C.b是类属性,类属性可以被使用,

但是行7的print会报错AttributeError: type object ‘C’ has no attribute ‘x’ ,就是因为C类对象没有x属性,因为__init__()只有在类对象被实例化的时候,才会被执行,

当C类对象被实例化,访问实例对象的x,就不会报错,这就是实例属性(只有实例才能访问):

class C:
	    b = 1

	def __init__(self):
		self.x = None

a = C()  # 实例化C
print(a.x)  # 访问a实例的x

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Python私有属性是指以双下划线开头的属性,例如`__a`。私有属性只能在类的内部访问,无法从类的外部或派生类直接访问。只有通过类内部的方法来间接访问私有属性才是合法的。例如,在类A的内部使用`self.__a`可以访问私有属性,而在类的外部使用`obj.__a`会引发错误。 相反,公有属性是指没有使用双下划线开头的属性,可以在类的内部、外部以及派生类直接访问。在类的外部可以使用对象名或者派生类的实例名来访问公有属性。例如,在类A定义的属性`self.eye`、`self.forehead`和`self.nose`可以直接在类的内部以及派生类访问。 总结来说,私有属性只能在类的内部通过类的方法间接访问,而公有属性可以在类的内部、外部以及派生类直接访问。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [python之面向对象类的成员](https://blog.csdn.net/aflqh04282/article/details/101523606)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [Python 笔记(19)— 类属性私有属性、公有属性实例属性、局部变量)、类方法(实例方法、静态方法)、...](https://blog.csdn.net/wohu1104/article/details/89424370)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值