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