python--类的实现--方法与属性的名称

python--类的实现--方法与属性的名称,第1张

python–类的实现–方法与属性的名称定义(私有,保护) 背景:
设计类的方法与属性时,需要考虑这些方法与属性的作用域。
属性介绍:
类中的私有变量 __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()

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/langs/723185.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-04-26
下一篇2022-04-26

发表评论

登录后才能评论

评论列表(0条)

    保存