python-day6(补充四:私有属性与函数)

私有属性与函数

  1. 私有属性与函数的用途
  2. 如何定义私有属性与函数
  3. 如何访问私有属性与函数

私有属性与函数的用途

在面向对象的封装中,私有的属性与函数其根本目的是防止它们在类的外部被使用,python中主要通过命名来进行区分。
把可能使用到的东西封装起来,提供公共调用方法,调用不改变我的属性。

如何定义私有属性与函数

通过给属性和函数名称添加_或__前缀

class Student:
	def __init__(self, name, gender):
		self._name = name
		self._gender = gender
	
	def _change_gender():
		pass
	
	def _change_name():
		pass
class Student:
    def __init__(self, name: str):
        self._name = name

    def say_hello(self, msg: str):
        print(f"Hello {msg}, {self._name}")

def main():
    s1 = Student("Jack")
    print(s1._name)

    s1.say_hello("111")

if __name__ == '__main__':
    main()

在这里插入图片描述
可以用,但是有提示,这样不好
加两个下划线就不能调用了

class Student:
    def __init__(self, name: str):
        self.__name = name

    def say_hello(self, msg: str):
        print(f"Hello {msg}, {self.__name}")

def main():
    s1 = Student("Jack")
    print(s1.__name)

    s1.say_hello("111")

if __name__ == '__main__':
    main()

在这里插入图片描述
非要用,调用时把名字改为s1._Student__name

class Student:
    def __init__(self, name: str):
        self.__name = name

    def say_hello(self, msg: str):
        print(f"Hello {msg}, {self.__name}")

def main():
    s1 = Student("Jack")
    print(s1._Student__name)    # _classname__arttibute

    s1.say_hello("111")

if __name__ == '__main__':
    main()

在类的里面可以随便用,但是在类的外面需要注意的,别轴

【注】
print(f’{name}‘)其中 { } 相当于占位符,程序运行时花括号部分会变成相应的变量值,如果print(’{name}')中 f 被去掉,就是普通的打印功能,原封不动地打印字符串 {name}

资料来源:【面向对象的Python编程-04.私有属性与函数】 https://www.bilibili.com/video/BV1pv4y1D7Te/?share_source=copy_web&vd_source=0235d88ba3487903dc658fe856ba0135
UP:跟峰哥学编程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值