谈谈python子类能继承父类哪些属性和方法(新理解)

您所在的位置:网站首页 python中属性主要包括 谈谈python子类能继承父类哪些属性和方法(新理解)

谈谈python子类能继承父类哪些属性和方法(新理解)

2023-08-13 14:15| 来源: 网络整理| 查看: 265

在看到网上好多介绍子类不能继承父类的私有属性和方法后,抱着怀疑的态度进行了测试后,发现子类是可以继承父类的私有属性和方法,但是在实际进行开发过程中,不建议这么用

# 单继承:当前类只有一个父类 # 单继承第一个特点:子类可以拥有父类的所有属性和方法 # 什么时候用继承? # 如果该类的属性和方法用得到,但是不够完善 # 则可以通过继承给该类扩展属性和功能 class A(object): name = "张三" _age = 0 __address = "河南郑州" def hello(self): pass def _eat(self): pass def __sleep(self): pass class B(A): pass # 类外访问属性 # 1)常规属性对象可以直接打点使用 # 2)单下划线属性,打点调用不提示,但是可以正常使用 # 3)双下划线属性,打点调用不提示,且不能强制使用 # 可以通过 对象._类名__属性 # 类外访问方法 # 1)常规方法对象可以直接打点使用 # 2)单下划线方法,打点调用不提示,但是可以正常使用 # 3)双下划线方法,打点调用不提示,且不能强制使用 # 可以通过 对象._类名__方法 # 子类重写父类属性 # 1)常规属性会直接覆盖 # 2)单下划线属性会直接覆盖 # 3)双下划线属性不能覆盖 # 子类重写父类方法 # 1)常规方法会直接覆盖 # 2)单下划线方法会直接覆盖 # 3)双下划线方法不能覆盖 # 总结:双下划线属性和方法表示为私有(要求只能在类内使用,类外不能用) # 但是,python限制没那么严格,可以通过上面访问属性和方法第3步这种方式强制使用(不推荐) a = A() print(a.name, a._age, a._A__address) # 子类能够使用父类的哪些属性? # 1.常规属性 # 2.单下划线属性 子类对象._属性 # 3.双下划线属性 子类对象._父类__属性名 # 子类能够使用父类的哪些方法? # 1.常规方法 # 2.单下划线方法 子类对象._方法 # 3.双下划线方法 子类对象._父类__方法 b = B() print(b.name, b._age, b._A__address) # 如果子类访问一个自己没有的属性和方法,会怎么样? # 1)先在本类中查找是否拥有该属性和方法 # 2)如果没有,查找父类中是否拥有该属性/方法 # 3)如果没有,继续向上查找 # 4)如果最后还是没有,则报错 print(b.phone) # python明确规定,_和__属性和方法,类外理论上可以用,实际上做项目时代码中最好不要用


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3