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

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()调用
原创文章 12 获赞 6 访问量 435

猜你喜欢

转载自blog.csdn.net/Hzfeng666/article/details/104537846