Python3面向对象-——私有属性和方法的设置及访问

本文详细解析了Python3中私有属性和方法的概念,包括如何定义私有属性和方法,以及如何从类外部访问这些私有成员。文章还介绍了两种访问私有成员的方法:通过在类内部定义公共方法间接访问,以及利用Python特有的名称修改规则直接访问。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、python3中,以双下划线__开头的属性和方法一般都是私有的:

class Dog(object):        #定义一个Dog类     
    def __init__(self,name):
        self.name = name    #公有属性
        self.__age = 3   #私有属性
 
    def __fly(self):      #私有方法
        print("我想和太阳肩并肩!!")
 
obj1 = Dog("红红")
obj1.name          #可以直接访问
print(obj1.__age)  #不可以直接访问
obj1.__money    #不可以直接访问

2、访问私有属性和方法的方式

# 1、在类内通过普通方法可以访问私有属性和方法,然后类外调用普通方法来访问私有变量
class Dog(object):
    def __init__(self, name):
        self.name = name
        self.__age = 2

    def __fly(self):
        print("我想和太阳肩并肩!!")

    def func_age(self):  # 定义一个普通方法来访问私有属性
        print(f'拿到你的年龄了:{self.__age}')

    def func_fly(self):  # 定义一个普通方法来访问 私有方法
        self.__fly()


dog = Dog("花花")
dog.func_age()
dog.func_fly()
####################################################
# 2、因为python的和其他语言不同,不是完全的私有,只是通过某种方法修改了私有变量的名字。
# 因此可以通过(_类名__私有属性或方法)调用
class Dog(object):
    def __init__(self, name):
        self.name = name
        self.__age = 2

    def __fly(self):
        print("我想和太阳肩并肩!!")


dog = Dog("老黄")
print(dog._Dog__age)  # 通过_Dog__age调用
dog._Dog__fly()  # 通过_Dog__fly()调用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值