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()

python-day6(补充四:私有属性与函数)_第1张图片
可以用,但是有提示,这样不好
加两个下划线就不能调用了

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()

python-day6(补充四:私有属性与函数)_第2张图片
非要用,调用时把名字改为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:跟峰哥学编程

你可能感兴趣的:(python,开发语言)