1. 15、人工智能Python基础之面向对象_多继承、多态、私有属性的处理_笔记
    2. # 继承与多态
    3. # 基类、父类、超类
    4. # python的多继承与重写(多态性)
    5. # 私有属性:双下划线__开头 外部不能通过'对象名.属性名'来访问或者更改 实际将其转化为了'_类名__属性名'
    6. # 私有属性在类里面是正常使用 如果外部实在要修改私有属性 则需要预留一个方法修改私有属性
    7. # 强制访问私有属性:实例对象名._类名__私有属性 但是不建议这样操作,不同版本的Python解释器可能会把'__私有属性名'改成不同的变量名,
    8. # 总而言之,Python本身没有任何机制阻止你干坏事,一切靠自觉
    9. # 通过'对象名.__私有属性名'直接修改私有属性,表面上看好像修改了其实并没有,因为Python解释器已经将对象内部的
    10. # 属性名解释成'_类名__属性名' 如果在外边修改相当于另外申明了一个属性
    11. # -*- coding: utf-8 -*-
    12. __author__ = 'dongfangyao'
    13. __date__ = '2018/1/15 下午3:59'
    14. __product__ = 'PyCharm'
    15. __filename__ = 'oo2'
    16. # 封装 继承 多态
    17. class A():
    18. def a(self):
    19. print('我是A类里面的a方法')
    20. class B():
    21. def a(self):
    22. print('我是B类里面的a方法')
    23. def b(self):
    24. print('我是B类里面的b方法')
    25. class C():
    26. def c(self):
    27. print('我是C类里面的c方法')
    28. class D(A, B, C):
    29. def __init__(self, name, address):
    30. self.name = name
    31. self.__address = address
    32. def d(self):
    33. print('我是D类里面的d方法')
    34. def c(self):
    35. print('我的D类里面的c方法'+self.__address)
    36. def get_address(self):
    37. return self.__address
    38. dd = D('dfy', 'hunan')
    39. dd.a()
    40. dd.b()
    41. dd.c()
    42. dd.d()
    43. print(dd.get_address())
    44. # 强制访问私有属性
    45. # print(dd._D__address)
    46. dd.__address = 'beijing'
    47. print(dd.__address)
    48. print(dd.get_address() + '这才是真正的私有属性')
    49. print(dd.__dict__)
    50. 复制代码