
设计类的方法与属性时,需要考虑这些方法与属性的作用域。
属性介绍:
类中的私有变量 __id
类被实例化了后,不能被实例访问
不能被子类调用 访问
类的私有方法 __function
类被实例化后,不能被实例访问
不能被子类调用
类的保护变量_age
类被实例化了后,可以被实例访问, 不建议访问
可以被子类调用 访问
类的保护方法_father_function
可以被子类调用 访问
设计思路:
如果一个类的方法与变量不想被修改,不想被调用,属于内部实现,请使用私用变量,私有方法的命名方法__。
这就要求我们提前设计这个类的接口,一般只要理清该类的意义所在,设计该类的目的。
那么对于子类来说,就可以将其他的所有变量都设计为私有属性__.
而对于父类来说,则应该更加谨慎,除非你能保证后续子类不再使用父类的属性或者重写某些功能函数,否则不要轻易的使用__.
测试代码:
# -*- coding:UTF-8 -*-
# auther:drliu
# date:2022/4/20
# aim: 测试父类 ,子类的中的私有属性
class Father(object):
def __init__(self):
self.name = 0
self._age = 1
self.__id = 2
pass
def father_function(self):
pass
def __father_function1(self):
pass
def _father_function(self):
print(self.name)
print(__name__)
pass
def father_interface(self):
pass
class Children(Father):
def __init__(self):
super().__init__()
def children_function(self):
self.father_function()
a = self.name
b = self._age
c = self.__id
print(a, b, c)
pass
def children_interfacr(self):
self.__father_function1()
pass
def children_interfacr1(self):
self._father_function()
pass
def main():
father = Father()
a = father._age
print(a)
"""
类中的私有变量 __id
类被实例化了后,不能被实例访问
不能被子类调用 访问
类的私有方法 __function
类被实例化后,不能被实例访问
不能被子类调用
类的保护变量_age
类被实例化了后,可以被实例访问, 不建议访问
可以被子类调用 访问
类的保护方法_father_function
可以被子类调用 访问
"""
def main_1():
chil = Children()
chil._father_function()
if __name__ == '__main__':
main_1()
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)