python-day6(补充四:私有属性与函数)
私有属性与函数
- 私有属性与函数的用途
- 如何定义私有属性与函数
- 如何访问私有属性与函数
私有属性与函数的用途
在面向对象的封装中,私有的属性与函数其根本目的是防止它们在类的外部被使用,python中主要通过命名来进行区分。
把可能使用到的东西封装起来,提供公共调用方法,调用不改变我的属性。
如何定义私有属性与函数
通过给属性和函数名称添加_或__前缀
class Student:def __init__(self, name, gender):self._name = nameself._gender = genderdef _change_gender():passdef _change_name():pass
class Student:def __init__(self, name: str):self._name = namedef 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 = namedef 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 = namedef say_hello(self, msg: str):print(f"Hello {msg}, {self.__name}")def main():s1 = Student("Jack")print(s1._Student__name) # _classname__arttibutes1.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:跟峰哥学编程