在面向对象的封装中,私有的属性与函数其根本目的是防止它们在类的外部被使用,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()
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:跟峰哥学编程